1. 程式人生 > >冒泡演算法--常見手寫面試題

冒泡演算法--常見手寫面試題

一道很常見的面試題,看似很簡單,但面試時經常要求手寫, 在面試略有壓力的環境中,我們能發揮好嗎? 好記性不如爛筆頭,下面的程式碼都經過驗證可執行的,以下均為Java程式碼。
1.網上最常見的冒泡演算法

   static void sort1(int []array){
       for(int i = 0 ;i<array.length ;i++){
           for(int j = i + 1 ; j<array.length ;j++){
               if(arrya[i]<array[j]){
                  int
temp = array[j]; array[j] = array[i]; array[i] = temp; } } } }

2.氣泡排序提升效率,從後往前比

static void sort2(int []array){     
      for(int i = 0 ;i < array.length - 1; i++){
         boolean flag = false
; for(int j =array.length - 1; j > i; j--){ if(arrya[j] < array[j - 1]){ int temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = true; } } if
(!flag){ break; } } }

3.氣泡排序提升效率,從前往後比

static viod srot3(int []array){
    for(int i = 0 ; i <array.length -1; i++){
        boolean flag = flase;
        for(int j=0;j<array.length-i-1;j++){
            if(array[j]>array[j+1]){
               int temp       = array[j];
                   array[j]   = array[j+1];
                   array[j+1] = temp;
                   flag       = true;
               } 
         }
         if(!flag){
            break;
           }
      }
}

完整冒泡優化demon資源,親測可用,大家複製後新建Java專案把這個檔案貼上進去就可以用了。

升序排序:

public class Test05 {
public static void main(String[] args) {
// 12,45,9,67,455,用氣泡排序實現升序排列。
    int[] arr = { 12, 45, 9, 67, 455 };
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp;
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
               }
           }
       }
    System.out.println("排序後:");
    for (int i = 0; i < arr.length; i++)
    System.out.print(arr[i] + "\t");
    }
}

若要實現降序排列,只需將arr[j] > arr[j + 1]中的”<” 改為”