您的位置:首页 > 其它

先来个快排……纪念我即将死去的大学生活

2013-11-20 22:04 274 查看

时间复杂度:最好:o(nlogn)最差:o(nˆ2)

代码:
public class QuickSort {
private int[] paraL;

public QuickSort(){}

public void show(){
System.out.println("排序后的记录为:");
for(int para:paraL){
System.out.print(para+"    ");
}
System.out.println();
}
private int position(int low,int high){//获取枢轴
int value = paraL[low];//枢轴
while(low<high){
while(low<high&&value<=paraL[high]){//从右往左,第一个小于枢轴的置于最小的位置
high--;
}
paraL[low] = paraL[high];
while(low<high&&value>=paraL[low]){//从左往右,第一个大于枢轴的置于最大位置
low++;
}
paraL[high] = paraL[low];
}
paraL[low] = value;//将保存的枢轴变量返回,此时low==high
return low;
}
public void qSort(int low,int high){//开始快速排序
if(low<high){//这儿要加限制条件,确保长度>1,一个元素有什么可以排序的是吧
int position = position(low,high);//得到枢轴
qSort(low,position-1);//枢轴左排序
qSort(position+1,high);//枢轴右排序
}
}

public static void main(String[] args){
int[] paraL = {9,8,7,6,5,4,3,2,1};
QuickSort qs = new QuickSort();
qs.setParaL(paraL);
qs.qSort(0, paraL.length-1);//array的长度不带括号arrayName.length;
qs.show();
}

public int[] getParaL() {
return paraL;
}
public void setParaL(int[] paraL) {
this.paraL = paraL;
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: