冒泡排序是排序算法中较为基础的排序算法。本人对冒泡排序的理解为:
存在一个数组,数组中存放着N个无序数,在使用冒泡排序时,排序的每一趟最终目标是将某一个数放在合适的位置。假设将数组中的每一个数对应列表中的每一列,那么这个列表有N列,排序的每一趟当做列表中的每一行,那么这个列表有N-1行,之所以只有N-1行是因为,当N-1个数字排序完毕,最后一个(第N个)数自然就在正确的位置。因此冒泡排序就够成了一张N*(N-1)的表格。由此可以看出从排序第一趟第一个数走到排序最后一趟最后一个数,程序的时间复杂度为
N^2-N.利用大O记法,可以记O(N^2),由此可知冒泡排序比较适用于数据量较小的双层循环。
以下是冒泡排序的java语言代码实现:
/*
此实现是利用面向过程的编程思想
*/
public class sort00 {
public static void main(String[] args) {
int[] a={3,5,9,1,8,4,2};
show(a);
System.out.println(" ");
int[] b=sort(a);
show(b);
}
public static int[] sort(int[] a){
for(int i=a.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(a[j]<a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
public static void show(int[] a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}
运行结果如下:
?以上是本人对冒泡排序算法的个人理解,不喜勿喷,谢谢理解。
|