一.冒泡排序核心思想:
(1)假如一个待排序的数组有五个数,所以循环四次,第一轮让最大值放到最后一位,第二轮让剩下的数中最大值放到倒数第二位,以此类推,类似水中泡泡一样.
(2)老规矩,先上代码实现图:
int[] arr= {23,4,5,12,25,67,34};
int temp=0;//定义一个指针
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if (arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
(3)具体分析:
- 首先解决每一轮让当前比较的数中最大的调位置到最后.
- 先从数组第一个数和第二数进行比较,如果第一个比第二个大,则使用一个中间变量进行交换,这就是两层for循环中判断的精髓.
- 再看循环的次数,首先一共N个数,你需要进行比较N-1次,所以i<arr.length-1, 当你每一次让一个最大值调到最后面,这个时候后面的那一共位置就不需要进行比较了,所以循环次数为i<arr.length-i.