您的位置:首页 > 职场人生

面试必备-快速排序(Java)

2016-05-24 13:53 232 查看
以s[l]为基准,从右向左比较,找到比它小的就放到s[i]

从左向右比较,找到比它大的就放到s[j],

当i==j时,退出循环,s[i]=x

时间复杂度是nlogn

public class quickSort {

static void quickSortM(int[] s, int l, int r){
if (l < r){
int x = s[l];
int i = l,j = r;
while (i < j){
while (i < j && s[j] >= x){
j--;
}
if (i<j)
s[i++] = s[j];
while (i <j && s[i] < x){
i++;
}
if (i<j){
s[j--] = s[i];
}
}
s[i] = x;
quickSortM(s,l,i-1);
quickSortM(s,i+1,r);
}
}

public static void main(String[] args){
int s[] = {72,92,3,88,43,100,56};
quickSortM(s,0,s.length-1);
int j;
for (j=0;j<s.length;j++)
System.out.println(s[j]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息