java数据结构冒泡算法

来源:互联网 发布:道可道 知乎 编辑:程序博客网 时间:2024/05/23 14:55
 /**
  * 冒泡算法(从大向小)
  * 冒泡方向是 从左向右
  *
  * @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;
 }
 
原创粉丝点击