java实现快速排序

算法:

方法partition(int[] list,int first,int last)

每次分割前确定一个中心位置pivot。大于pivot的放到pivot右边,小于pivot的放到pivot左边。

一直分割到所有pivot处理完毕。

public class QuickSortDemo {
  public QuickSortDemo() {}
  public static void main(String[] args) {
	  int[] intList = {2,3,2,5,6,1,-2,3,14,12};
	  quickSort(intList,0,intList.length-1);
	  for (int i:intList) {
		  System.out.print(i + " ");
	  }
  }
  public static void quickSort(int[] list, int first, int last) {
	  if (last > first) {
		  int pivotIndex = partition(list,first,last);
		  quickSort(list,first,pivotIndex-1);
		  quickSort(list,pivotIndex+1,last);
	  }
  }
  public static int partition(int[] list, int  first, int last) {
	  int pivot = list[first];
	  int low = first+1;
	  int high = last;
	  
	  while (low < high) {
		  while (low <= high && list[low] <= pivot) low++;
		  while (low <= high && list[high] >= pivot) high--;
		  
		  if (high > low) {
			  int temp = list[high];
			  list[high] = list[low];
			  list[low] = temp;
		  }
	  }
	  
	  while (high > first && list[high] >= pivot) high--;
	  if (pivot > list[high]) {
		  list[first] = list[high];
		  list[high] = pivot;
		  return high;
	  }
	  else return first;	  
  }
}

 

posted on 2013-03-25 23:01  Jam_01  阅读(238)  评论(0编辑  收藏  举报

导航