快排

	/**
	 * 快排
	 * @param left
	 * @param right
	 */
	public static void quickSort(int left, int right) {
		if(left >= right)//如果左指针大于等于右指针,本轮排序结束
			return;
		
		int start = left;//起始指针
		int end = right;//终止指针
		int base = a[start];//基数(选最左边的数)
		
         //左指针如果小于右指针,则循环 while(left < right) {
              //当右指针指向的数小于等于基数,则右指针往左移动,否则停止 while(a[right] >= base && right > left) right--;
              //当左指针指向的数大于等于基数时,则左指针向右移动,否则停止 while(a[left] <= base && right > left) { left++; }
              //交换做右指针指向的数 swap(left, right); } //停止位置与基数互换 swap(start, right);
          //递归 quickSort(start, right-1); quickSort(right + 1, end); } private static void swap(int i, int j) { if(i != j) { int p = a[i]; a[i] = a[j]; a[j] = p; } }

  

posted @ 2016-01-11 00:21  huangshaobb  阅读(196)  评论(0编辑  收藏  举报