快速排序java实现

import java.util.*;
public class Main {
public static void quick_sort(int q[],int l,int r) {
if(l>=r){
return;
}
//1.选择一个数作为分界点,将数组分为两个部分,左边都小于等于它,右边都大于等于它
int x=q[l+r>>1];
//定义两个指针,i指向的数小于等于x就往右移,直到大于它,j同理
int i=l-1,j=r+1;
while(i<j){
do{
i++;
}while(x>q[i]);
do{
j--;
}while(x<q[j]);
//两个指针都停下时如果i<j,就交换这两个数
if(i<j){
int t=q[i];
q[i]=q[j];
q[j]=t;
}
}
//递归处理左半数组和右半数组
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int[] b=new int[n];
for(int i=0;i<n;i++){
b[i]=scan.nextInt();
}
quick_sort(b,0,n-1);
for(int i=0;i<n;i++){
System.out.print(b[i]+" ");
}
}
}

posted @ 2022-04-03 19:02  经典的错误  阅读(32)  评论(0)    收藏  举报