Java之冒泡排序(Bubble Sort)
2019-01-24 本文已影响0人
小小弓长张
原理是比较相邻的两个元素,将值大的元素交换到右端。
思路:依次比较相邻的两个数,将小的数放在左面,大数放在右面。
优点:每进行一次排序,排序次数就会少一次,因为每一次排序都会找出一个最大值。
第一次:比较第一个和第二个数,将小数放在左面,大数放在右面,然后比较第二个和第三个数,将小数放在左面,大数放在右面,依次类推,直到比较到最后两个数,第一次排序完成。
第一次排序完成后,最后一个数肯定是数组中最大的数,因此第二次排序的时候,最后一个数不参与比较。
第二次排序完成后,倒数第二的数肯定是数组中倒数第二大的数,因此第三次排序的时候,最后两个数不参与比较。
以此类推,每一次的排序次数减一,直到排序完成。
结论:N个数字要进行排序,总共要进行N-1次排序,每一趟的排序次数N-1次,所以使用双重循环语句,外层循环控制循环多少次,内层循环控制每一趟的循环次数。列:
for(int i = 0 ;i<array.length-1 ; i++){ //外层循环控制循环的次数
for(int j = 0 ; j<array.length-1-i ; j++){ //内层循环控制每一次排序多少次
//将排序好的数交换位置
if(array[j]>array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}