注意一下: 必须要用key存下num[(l+r)>>1]的值,因为在里面会变动
import java.math.*; import java.util.*; public class Main { public static HashMap<String,Long> map = new HashMap<>(); public static void main(String args[]) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int fx[] = new int[n]; int N=n,x; for(int i=0;i<n;i++) { fx[i] = input.nextInt(); } QuickSort(fx,0,fx.length-1); for(int i=0;i<n;i++) System.out.print(fx[i]+" "); } public static void QuickSort(int num[],int l, int r) { int key = num[(l+r)>>1],i=l,j=r,temp=0; while(i<=j){ while(num[i]<key) i++; while(num[j]>key) j--; if(i<=j) { temp = num[i]; num[i] = num[j]; num[j] = temp; i++; j--; } } if(i<r) QuickSort(num,i,r); if(j>l) QuickSort(num,l,j); } }