算法1
() $O(nlogn)$
blablabla
时间复杂度
参考文献
java 代码
import java.util.Scanner;
import java.util.Collections;
public class Main{
public static void main(String args[]){
Scanner s =new Scanner(System.in);
int n = s.nextInt();
int nums[] = new int[n];
for(int i=0;i<nums.length;i++){
nums[i]=s.nextInt();
}
qsort(nums,0,n-1);//挑出一个数,把小的放在它左边大边的放在它右边
for(int i =0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
}
public static void qsort(int nums[],int l,int r){
//基线条件
if(r-l<1) return;
//Y总的逻辑
int x=nums[l+r>>1];
int i =l-1;
int j =r+1;
while(i<j){
do i++; while(nums[i]<x);
do j--; while(nums[j]>x);
if(i<j){
int temp =nums[i];
nums[i] = nums[j];
nums[j]=temp;
}
}
//j可能是比x小的数,也可能是等于x的数;
if(nums[j]==x) qsort(nums,l,j-1);
else qsort(nums,l,j);
qsort(nums,j+1,r);
}
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla