package com.spring.dao;
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int []str = {12,76,18,35,43,15,38,2,32,65,23,72,0,64,16,678};
QuickSort(str,0,str.length-1);
for(int i = 0 ; i < str.length ; i ++){
System.out.print(str[i]+" ");
}
}
public static void QuickSort(int[] pData,int left, int right) {
int i, j; //获取当前需要排序数组的起始与结束下标
int middle; //标记值,用于定位中心点
int strTemp;//局部存储变量
i = left;
j = right;
middle = pData[(left + right) / 2];//获取标记值
do {
while ((pData[i] < middle) && (i < right))i++; //独立循环获取中心值左边,所有值中小于中心值的下标。
while ((pData[j] > middle) && (j > left))j--; //独立循环获取中心值右边,所有值中大于中心值的下标。
if (i <= j){//将中心值左边大于中心值数值的数 与 中心值右边小于中心值 的值,调换位置。
strTemp = pData[i];
pData[i] = pData[j];
pData[j] = strTemp;
i++;
j--;
}
} while (i <= j); //直至中心值左右两端下标重叠。侧停止,完成第一次遍历
//注意此时的I,J值,将当前数组已中心值拆分,递归调用。
if (left < j) //将拆分的左边数组重新进行排序
QuickSort(pData, left, j);
if (right > i) //将拆分的右边数组重新进行排序
QuickSort(pData, i, right);
}
}