冒泡排序算法需要遍历几次数组。每次遍历都要比较连续相邻的元素,如果某一对相邻元素是降序,则互换它们的值,否则,保持不变。由于较小的值像“气泡”一样逐渐浮想顶部,而较大的值沉向底部,所以叫冒泡排序。
冒泡排序的图解是:
总结一句话就是:连续比较相邻的元素,降序则呼唤。有n个数,共需要比较n-1趟,第i趟,需要比较n-i次。
BubbleSort.Java
- public class BubbleSort { //时间复杂度O(n^2)
- public static void display(int[] array){
- for(int i=0;i<array.length;i++){
- System.out.print(array[i]+"\t");
- }
- System.out.println();
- }
- //冒泡排序
- public static void bubbleSort(int[] list){
- int n=list.length;
- for(int i=1;i<n;i++){ //总共比较n-1趟
- for(int j=0;j<n-i;j++){ //第i趟比较n-i次
- if(list[j]>list[j+1]){
- int temp;
- temp=list[j];
- list[j]=list[j+1];
- list[j+1]=temp;
- }
- }
- System.out.print("第"+(i)+"轮排序结果:");
- display(list);
- }
- }
- public static void main(String args[]){
- int[] list={ 25,6,56,24,9,12,55};
- System.out.println("冒泡排序前的list是:");
- for(int i=0;i<list.length;i++){
- System.out.print(list[i]+" ");
- }
- System.out.println();
- bubbleSort(list);//进行冒泡排序
- System.out.println();
- System.out.println("冒泡排序后的list是:");
- for(int i=0;i<list.length;i++){
- System.out.print(list[i]+" ");
- }
- }
- }
- public class BubbleSort { //时间复杂度O(n^2)
- public static void display(int[] array){
- for(int i=0;i<array.length;i++){
- System.out.print(array[i]+"\t");
- }
- System.out.println();
- }
- //冒泡排序
- public static void bubbleSort(int[] list){
- int n=list.length;
- for(int i=1;i<n;i++){ //总共比较n-1趟
- for(int j=0;j<n-i;j++){ //第i趟比较n-i次
- if(list[j]>list[j+1]){
- int temp;
- temp=list[j];
- list[j]=list[j+1];
- list[j+1]=temp;
- }
- }
- System.out.print("第"+(i)+"轮排序结果:");
- display(list);
- }
- }
- public static void main(String args[]){
- int[] list={ 25,6,56,24,9,12,55};
- System.out.println("冒泡排序前的list是:");
- for(int i=0;i<list.length;i++){