//1.快排 强调两点 (1)分治(首先在该段数组区间中选取一个中间值作比较,此中间值可以任选比如两端或中间,但是选择中间这样效率高) (2)递归 递归时需要注意边界 对x位置小结: 如果区间取[l,i-1]和[i,r]这种,那么x不应该取左边界(l、(l+r)/2)。 应取 x = q[r]; x = q[(l+r+1)/2]; 如果区间取[l,j]和[j+1,r]这种,那么x不应该取右边界(如r、(l+r+1)/2)。 应取 x = q[l]; x = q[(l+r)/2]; 可以自己取【0,1】感受一下 import java.util.*; import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader reader= new BufferedReader(new InputStreamReader(System.in)); int n=Integer.parseInt(reader.readLine()); String[] str=reader.readLine().split(" "); int[] str1=new int[n]; for(int i=0;i=r){return;} int q=num[l+r/2];int i=l;int j=r; while(i j||i=j两种情况均退出 while(num[i] q){j--;} if(i欢迎分享,转载请注明来源:内存溢出
算法-排序
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
每日一题Day21
上一篇
2022-12-17
瑞萨RL78系列单片机CS+(Cube Suite+)下重定向printf函数
下一篇
2022-12-17
评论列表(0条)