//快速排序
/**
* 倒序排列
* @param daoxuList
* @param low
* @param high
*/
if(low>high) {
return;
}
//初始化
int i=low;
int j=high;
int value=daoxuList[high];
//一次快速排序
while(i<j) {
while(daoxuList[i]>value&&i<j) {
i++;
}
daoxuList[j] = daoxuList[i];
while(daoxuList[j]<=value&&i<j) {
j--;
}
daoxuList[i] = daoxuList[j];
}
//调整基准数位置
daoxuList[j]=value;
//递归调用
daoxu(daoxuList,low,i-1); //基点左侧 i-1给high赋值
daoxu(daoxuList,i+1,high); //基点右侧 i+1给low赋值
/**
* 正序排列
* @param zhengxingList 数组
* @param low 基点
* @param high
*/
public static void zhengxu(int[] zhengxingList,int low,int high) {
if(low>high) {
return;
}
//初始化
int i= low;
int j= high;
int value= zhengxingList[low];
//一次快速排序
while(i<j) {
while(zhengxingList[j]>value&&i<j) {
j--;
}
zhengxingList[i] = zhengxingList[j];
while(zhengxingList[i]<=value&&i<j) {
i++;
}
zhengxingList[j] = zhengxingList[i];
}
//调整基准数位置
zhengxingList[i] = value;
//递归
zhengxu(zhengxingList,low,i-1); //基点左侧 i-1给high赋值
zhengxu(zhengxingList,i+1,high); //基点右侧 i+1给low赋值
}