排序算法(二) 冒泡排序

来源:互联网 发布:岗位优化人员优化方案 编辑:程序博客网 时间:2024/05/21 21:48
package study;public class SortNumberTest {           public static void main(String[] args) {        Test1();    }    public static void Test1(){    System.out.println("冒泡排序");    int[] numbers={7,6,5,8,1,3,8,4,2,9};    bubbleSort(numbers);    System.out.println("...................................");        System.out.println("冒泡排序优化");    int[] numbers2={7,6,5,8,1,3,8,4,2,9};    bubbleSort3(numbers2);    System.out.println("...................................");    }    //冒泡排序     public static void bubbleSort(int[] numbers) {       print(numbers);    for (int i = 0; i < numbers.length -1; i++){    //最多做length-1趟排序            for(int j = 0 ;j < numbers.length - i - 1; j++){    //对当前无序区间numbers[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)                if(numbers[j] < numbers[j + 1]){    //把小的值交换到后面                swap(numbers,j,j+1);                    print(numbers);                }            }                    }    }           //冒泡排序优化:排序次数不一定非要n-1次,排完即终止    public static void bubbleSort3(int[] numbers){     print(numbers);        boolean flag = true;          int n = numbers.length;          while(flag){              flag = false;              for(int j=0;j<n-1;j++){                  if(numbers[j] <numbers[j+1]){                  swap(numbers,j,j+1);                  print(numbers);                    //设置标志位                      flag = true;                  }              }              n--;          }      }         private static void swap(int[] numbers, int a, int b) {    int t = numbers[a];    numbers[a] = numbers[b];    numbers[b] = t;    }      private static void  print(int[] numbers){    for (int i = 0; i < numbers.length; i++) {           System.out.print(numbers[i]+" ");        }        System.out.println();    }    }


0 0
原创粉丝点击