比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个,即需要进行length-1次。
第一次是对n个数进行n-1次比较,进行到最后第n个的一个是最大的;
第二次是对n-1个数进行n-2次比较,进行到最后第n-1个的一个是最大的;
......
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
动态图:
public class test {
public static void main(String[] args) {
int[] list = {65, 55, 45, 35, 25, 15, 10};
list =bubble_sort(list);
for(int j=0;j<list.length;j++)
System.out.print(list[j]+" ");
}
public static int[] bubble_sort(int[] number){
int unsorted_until_index= number.length-1;//该索引之前的数据都没排过序
boolean sorted = false;//记录数组是否已经完全排好序
while (! sorted){
sorted = true;
for (int i = 0; i <unsorted_until_index ; i++) {
if (number[i]>number[i+1]){
sorted=false;
int mid = number[i];
number[i]=number[i+1];
number[i+1]= mid;
}
}
unsorted_until_index=unsorted_until_index -1;
}
return number;
}
}
def bubble_sort(list):
unsorted_until_index=len(list) -1
sorted=False
while not sorted:
sorted=True
for i in range(unsorted_until_index):
if list[i] > list[i+1]:
sorted=False
list[i], list[i+1]=list[i+1], list[i]
unsorted_until_index=unsorted_until_index -1
list=[65, 55, 45, 35, 25, 15, 10]
bubble_sort(list)
print(list)
评论