java數據結構冒泡算法

 /**
  * 冒泡算法(從大向小)
  * 冒泡方向是 從左向右
  *
  * @param iArgs
  * @return
  */
 public static int[]  getBubbleSort(int[] iArgs) {
  int[] iTempArgs = iArgs;
  boolean flag = true; //數組是否已經是最好情況
  
  //第一層循環控制比較次數
  for(int i = 0; i < iTempArgs.length ; i++) {
   //iTempArgs.length - 1 -i 減1是因爲數據裏面有j+1 ,減i是因爲對於已經排好的位置不需要再比較 
   //j = 0 數據裏面所有的位置都需要比較,除了已經排好的位置不需要
   //j = i 會有bug。
   for(int j = 0 ; j < iTempArgs.length - 1 - i; j++) { 
    int iFont = iTempArgs[j];
    int iBehind = iTempArgs[j + 1];
    int temp = 0;
    if(iBehind < iFont) {
     temp = iBehind;
     iTempArgs[j + 1] = iFont; // 給數據賦值
     iTempArgs[j] = temp; //給數據賦值
     flag = false;
    }
   }
   if(flag) {
    //如果數組已經是最好情況,就無需再排序,直接跳過
    break;
   }
  }
  return iTempArgs;
 }
 
 /**
  * 冒泡算法(從小向大)
  * 冒泡方向是 從右向左
  * @param iArgs
  * @return
  */
 public static int[] getBubbleSortRTOL(int[]  iArgs) {
  int iTempArgs[] = iArgs;
  boolean flag = true;
  for(int i = 0; i < iTempArgs.length ; i ++) {
   for(int j = iTempArgs.length - 1; j > i ; j--) {
    int iFont = iTempArgs[j -1];
    int iBehind = iTempArgs[j ];
    int iTemp;
    if(iFont > iBehind ) {
     iTemp = iFont;
     iTempArgs[j - 1] = iBehind;
     iTempArgs[j] = iTemp;
     flag = false;
    }
   }
   if(flag) {
    break;
   }
  }
  return iTempArgs;
 }
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章