java学习之数组元素排序,冒泡排序和选择排序

java学习之数组元素排序

选择排序

  • *返回值类型 void
  • *参数列表 int[] arr
  • * 分析:选择排序
  • * 第一次arr[0]与arr[1-4]比较,总共比较4次
  • * 第二次arr[1]与arr[2-4]比较,总共比较3次
  • * 第三次arr[2]与arr[3-4]比较,总共比较2次
  • * 第四次arr[3]与arr[4]比较,总共比较1次

冒泡排序

  • 返回值类型void
  • * 参数列表 int[] arr
  • * 分析:冒泡排序
  • * 第一次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],arr[3]和arr[4]比较了4次
  • * 第二次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3]比较了3次
  • * 第三次比较arr[0]和arr[1],arr[1]和arr[2]比较了2次
  • * 第四次比较arr[0]和arr[1]比较了1次
package com.ifenx8.study.array;

public class Demo_BubbleSort {

	/**
	 	需求:
			数组元素:{24, 69, 80, 57, 13}
			请对数组元素进行排序。
	 */
	public static void main(String[] args) {
			int[] arr = {24, 69, 80, 57, 13};
			//bubbleSort(arr);//冒泡排序
			selectSort(arr);//选择排序
			print(arr);
	}
	/*
	 *返回值类型 void
	 *参数列表 int[] arr
	 *
	 * 分析:选择排序
	 * 第一次arr[0]与arr[1-4]比较,总共比较4次
	 * 第二次arr[1]与arr[2-4]比较,总共比较3次
	 * 第三次arr[2]与arr[3-4]比较,总共比较2次
	 * 第四次arr[3]与arr[4]比较,总共比较1次
	 * 
	 */
	public static void selectSort(int[] arr) {
		for (int i = 0; i < arr.length -1; i++) {
			for (int j = i + 1; j < arr.length; j++) { if(arr[i] > arr[j]){
					/*int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;*/
					swap(arr, i , j);
				}
			}
		}
		
	}
	
	/**冒泡排序
	 * 返回值类型void
	 * 参数列表 int[] arr
	 * 分析:
	 * 第一次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],arr[3]和arr[4]比较了4次
	 * 第二次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3]比较了3次
	 * 第三次比较arr[0]和arr[1],arr[1]和arr[2]比较了2次
	 * 第四次比较arr[0]和arr[1]比较了1次
	 * 
	*/
	public static void bubbleSort(int[] arr) {
	for (int i = 0; i < arr.length - 1; i++) {//外部循环比较的是第几次
		for (int j = 0; j < arr.length - 1 -i; j++) {//内部循环比较了几次 if(arr[j] > arr[j + 1]){
				/*int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;*/
				swap(arr , j , j + 1 );
			}
		}
	}
	}
	/*
	 *打印数组 
	 */
	public static void print (int[] arr){
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
	}
	/*
	 * 把两个排序中共同的部分抽取成一个方法
	 * 				int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
					代码更简洁
	 */
	private static void swap(int[] arr, int i ,int j) {
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大前端_Web

js浮点数加减乘除

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

18730
来自专栏python3

python 函数

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

11910
来自专栏和蔼的张星的图像处理专栏

684. 缺少的字符串分解到vector中借助find函数

先把两个字符串都分解到vector中,以空格为标志,然后在借助find函数来找出两个vector中不同的单词。

14330
来自专栏JavaEdge

青铜到王者 ,快速提升你 Go语言的段位! "狗"语言实战(二)- 基础语法1 变量定义

14940
来自专栏大闲人柴毛毛

稳扎稳打JavaScript(一)——作用域链内存模型

几个概念 在开始之前,先了解几个概念。 1.1. 作用域 作用域是指当前正在执行的代码能够访问到变量的范围; 每个函数都有各自的作用域,存储函数所有的局部变量...

48580
来自专栏python3

python字符串

1.    S.find(substr,[start,[end]])    返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1,st...

10720
来自专栏Hongten

python开发_python中str.format()

20620
来自专栏web前端教室

十一国庆节 之 “变量与函数同名时,会输出谁?”

看这样一个题目: b = function c() { a = 1, b = 2, c = 3; console.log(a); //1 ...

188100
来自专栏Python小屋

数学老师从没这么教过,乘法竖式中进位可以是多位(附Python实现与测试源码)

大概十五年前,曾经写过一个C语言版本的类似代码。核心思想是:在乘法竖式计算过程中,每次的进位实际上是可以超过一位的,虽然老师从来没有这么教过。 ? 这样的操作在...

35160
来自专栏日常分享

Spring 学习笔记(七)—— 切入点表达式

  语法结构:   execution(   方法修饰符  方法返回值  方法所属类 匹配方法名 (  方法中的形参表 )  方法申明抛出的异常  )

6110

扫码关注云+社区

领取腾讯云代金券