`

各种排序算法2

 
阅读更多

/**
  * 快速排序
  * 思路:选择中间数作为基准,然后i从左向右找到第一个大于等于这个基准的数,j从右向左找到第一个小于等于该基准的数,直到i>=j,交换这两个数。
  * 然后递归对左边i个数和右边n-1-i个数进行相同排序。
  */
 public int[] quickSort(int[] iAry, int left, int right) {
  if (left < right) {
   int midNum = iAry[(left + right) / 2];
   int i = left - 1;
   int j = right + 1;
   while (true) {
    while (iAry[++i] < midNum);
    while (iAry[--j] > midNum);
    if (i >= j) {
     break;
    }
    swap(iAry, i, j);
   }
   quickSort(iAry, left, i - 1);
   quickSort(iAry, j + 1, right);
  }
  return iAry;
 }

 private int[] createAry() {
  Random rand = new Random();
  int[] ary = new int[5];
  for (int i = 0; i < ary.length; i++) {
   ary[i] = rand.nextInt(100);
  }
  return ary;
 }

 private void printAry(int[] ary) {
  System.out.println(Arrays.toString(ary));
 }

 private void swap(int[] iAry, int num1, int num2) {
  int temp = iAry[num1];
  iAry[num1] = iAry[num2];
  iAry[num2] = temp;
 }

 @Test
 public void sortTest() {
  int[] iAry = createAry();
  System.out.print("原始数组:");
  printAry(iAry);

   iAry = bubbleSort(iAry);
   System.out.print("冒泡排序后的数组:");
   printAry(iAry);
  
   iAry = selectSort(iAry);
   System.out.print("选择排序后的数组:");
   printAry(iAry);
  
   iAry = insertSort(iAry);
   System.out.print("插入排序后的数组:");
   printAry(iAry);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics