java 快速排序 算法

来源:互联网 发布:朋友圈转发视频软件 编辑:程序博客网 时间:2024/06/05 20:43
java 快速排序 算法:

        下边算法等同于使用数组工具类Arrays的sort()方法:Arrays.sort(a);

package com.usual;
public class ArrayTest {
 
 public static void main(String [] args) {
  int a[] = {20,6,33,5,81,6,25,4};

//快速排序方法调用时,参数1:需要排序数组,参数2:startIndex,参数3:endIndex
  quickSort(a,0,7);

  for (int i = 0; i < a.length; i++) {
   
   System.out.println(a[i]);
  }
 }
 public static void quickSort(int a[], int start, int end) {
  int i, j;
  i = start;
  j = end;
  if ((a == null) || (a.length == 0))
   return;
  while (i < j) {
   /* 以数组start下标的数据为key,右侧扫描 */
   while (i < j && a[i] <= a[j])
   {
    j--;
   }
   /* 右侧扫描,找出第一个比key小的,交换位置 */
   if (i < j)
   {
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
   }
   /* 左侧扫描(此时a[j]中存储着key值) */
   while (i < j && a[i] < a[j])
   {
    i++;
   }
   /* 找出第一个比key大的,交换位置 */
   if (i < j)
   {
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
   }
  }
  if (i - start > 1) {
   /* 递归调用,把key前面的完成排序 */
   quickSort(a, start, i - 1);
  }
  if (end - i > 1) {
   /* 递归调用,把key后面的完成排序 */
   quickSort(a, i + 1, end);
  }
 }
}

0 0