日期:2014-05-20 浏览次数:20648 次
/**
* 完成一次数据交换,将数据分开到标识位的两侧(大的一边,小的一边)
* 中轴位取low
* @param data
* @param low 需要排序的低位
* @param high 需要排序的高位
* @return 返回中轴位置
*/
private int onceSwap(int[] data,int low,int high){
//选取第一个元素做为中轴
int temp = data[low];
while(low<high){
//比中轴小的记录移到低端
for(;low<high && data[high]>=temp;high--){
}
data[low] = data[high];
//比中轴大的记录移到高端
for(;low<high && data[low]<=temp;low++){
}
data[high] = data[low];
// //比中轴小的记录移到低端
// for(;low<high;high--){
// if(data[high]<=temp) break;
// }
// data[low] = data[high];
// //比中轴大的记录移到高端
// for(;low<high;low++){
// if(data[low]>=temp) break;
// }
// data[high] = data[low];
}
data[low] = temp;
return low;
}