Java冒泡排序
2018-11-15 本文已影响0人
简书mhy
int[] arr = {5,3,2,7,9,6};
冒泡排序法:
第一次外循环,内循环中,5需要分别和后边的 5 个数进行比较 比较5次
第二次外循环,内循环中,3需要分别和后边的 4个数进行比较 比较4次
(第一次外循环5和3已经比较过了,所有不需要再次比较,只需要比较后边的几个就可以了)
第三次外循环,内循环中,2需要分别和后边的3个数进行比较
......
第五次外循环,内循环中,9只需要和6进行比较即可,到此结束 比较1次
结论: 外循环:arr.length-1
内循环:arr.length-1-i
public static void main(String[] args) {
int x = 0 ;
int[] arr = {5,3,2,7,9,6};
/**
* 冒泡排序法:
* 第一次外循环,内循环中,5需要分别和后边的 5 个数进行比较 比较5次
* 第二次外循环,内循环中,3需要分别和后边的 4个数进行比较 比较4次
* (第一次外循环5和3已经比较过了,所有不需要再次比较,只需要比较后边的几个就可以了)
* 第三次外循环,内循环中,2需要分别和后边的3个数进行比较
* ......
* 第五次外循环,内循环中,9只需要和6进行比较即可,到此结束 比较1次
*
*结论: 外循环:arr.length-1
* 内循环:arr.length-1-i
*/
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]){
change(arr, j, j+1);
}
x++;
}
}
System.out.println("次数"+x);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/**
* <p>功能描述:交换数组位置</p>
* <p>方法名:change</p>
* <p>@param arr 数组
* <p>@param i交换的两个索引
* <p>@param j
*/
public static void change(int[] arr,int i,int j){
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}