数组排序可用Arrays.sort(arr);
本文介绍经典冒泡排序思想和代码实现。
冒泡排序思想每轮比较出一个最值,这样比较的轮数为数组长度-1。
问题一:那么如何比较出最值呢?
以升序为例:
相邻的元素依次比较,即索引为x
的元素和索引为x+1
的元素比较,将较大值
赋值给索引为x+1
的元素,较小值
赋值给索引为x
的元素。
代码实现案例:
//从小到大排序
int [] arr = {13,3,5,9,8,6,7,10,15,11,14,4,12};
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+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
StringBuilder sb = new StringBuilder("数组从小到大排序结果为:");
for (int x:arr){
sb.append(x+"<");
}
System.out.println(sb.substring(0,sb.length()-1));
外层控制比较轮数,内层负责每轮比较出一个最大值并将最大值至于数组尾部。
由于每轮比较出了一个最大值并且在数组的尾部,那么下次比较较大值
时只需要比较
arr.length-1-i
次,因为最大值
已经在末尾了不需要在比较了。
外层轮数为arr.length-1
是因为每轮都能比较出一个最大值,比如三个数字,第一轮比较出了一个最大值,第二轮又比较出一个最大值,那么剩下的那个肯定就是最小的了。所以是arr.length-1
轮数。
理解了思想,自己就能写出代码来了。