冒泡排序:
1、第一个和第二个元素依次比较,如果前一个大于后一个则,将两个元素的值交换,后一个元素再与下一个元素进行比较,直到最后一个元素。此时得到的最后一个元素将是数组中最大的元素。最大的元素固定,不在进行比较操作;
2、再从第一个第二个开始依次比较,如果前一个大于后一个则,将两个元素的值交换,后一个元素再与下一个元素进行比较,直到倒数第二个元素。此时得到的倒数第二个元素是数组中第二大的元素,这个元素也固定,不在进行比较操作;
...
3、按照上述规则一直操作,直到确定最小元素位为止;得到的结果将是按照从小到大顺序排列的数组;
代码如下:
public class BubbleSort {
private static int num=0;//循环次数
public static int[] sort(int[] forSort,int length){
if(length>0){
for(int i = 0; i<length-1 ; i++ ){
num++;
if(forSort[i]>forSort[i+1]){
int temp = forSort[i];
forSort[i] = forSort[i+1];
forSort[i+1] = temp;
}
}
length--;
System.out.println("分次结果:"+Arrays.toString(forSort) +", length="+ length);
sort(forSort, length);
}
return forSort;
}
public static void main(String[] args) {
int[] array = {2,5,6,8,5,4,6,9,4,9};
array = sort(array, array.length-1);
System.out.println("最后结果:"+Arrays.toString(array)+",num="+num);
}
}
执行结果如下:
分次结果:[2, 5, 6, 5, 4, 6, 8, 4, 9, 9], length=8
分次结果:[2, 5, 5, 4, 6, 6, 4, 8, 9, 9], length=7
分次结果:[2, 5, 4, 5, 6, 4, 6, 8, 9, 9], length=6
分次结果:[2, 4, 5, 5, 4, 6, 6, 8, 9, 9], length=5
分次结果:[2, 4, 5, 4, 5, 6, 6, 8, 9, 9], length=4
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9], length=3
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9], length=2
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9], length=1
分次结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9], length=0
最后结果:[2, 4, 4, 5, 5, 6, 6, 8, 9, 9],num=36