最近由于面试需要,看看算法,顺手记录下
思路最重要:冒泡排序的核心思想就是找数据的最大值,放到最后(例子是从小到大)
一维数组有多长,就要找几次。
先来个一维数组
int arr[]= {3,11,108,79,34,78,32};
冒泡的排序分为两步:
1.找几次:也就是这个数组多长:
arr.length
由于数组下标是从0开始,所以遍历的次数就是:
arr.length-1
2.每次找的时候要把相邻的大的元素放在后面
if (arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; }
代码:
int arr[]= {3,11,108,79,34,78,32}; int temp = 0; 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]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for (int i=0;i< arr.length;i++){ System.out.println("\n"+arr[i]);}
点缀:其实第二个for 可以不减去i,程序也没有问题,在这-i是为了减少执行次数,因为后面的i个已经排好序了。