首页 > 其他分享 >快排

快排

时间:2023-06-20 23:33:31浏览次数:38  
标签:int quickSort ++ mid 快排 while 68

代码

#include<iostream>
using namespace std;

const int N = 1e5 + 10;

int s[N];

void quickSort(int l, int r){
    if(l >= r) return;
    
    int mid = s[(l + r) >> 1];
    int i = l - 1, j = r + 1;
    while(i < j){
        do ++i; while(s[i] < mid);
        do --j; while(s[j] > mid);
        if(i < j) swap(s[i], s[j]);
    }
    quickSort(l, j);
    quickSort(j + 1, r);
}

int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) cin >> s[i];
    quickSort(0, n - 1);
    for(int i = 0; i < n; i++) cout << s[i] << " ";
    return 0;
}

Q&A

1. 为什么是 do ++i; while(s[i] < mid);而不是while(s[i] < mid) ++i;

考虑这样一个情况

68 68 68

当队列所有值都相同时,i和j就会停止移动,陷入死循环

标签:int,quickSort,++,mid,快排,while,68
From: https://www.cnblogs.com/INnoVationv2/p/17495148.html

相关文章

  • 【剑指 Offer】数组中重复的数字(C++_Easy_遍历/哈希/快排/原地)
    题目在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。测试样例输入:[2,3,1,0,2,5,3]输出:2或3限制2<=n<=100000题解题解一:遍历对vector容器......
  • PTA_乙级_1015 德才论(C++_模拟_快排)
    宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出3个......
  • PAT_Advanced Level_1083 List Grades (25分)(C++_快排)
    GivenalistofNstudentrecordswithname,IDandgrade.Youaresupposedtosorttherecordswithrespecttothegradeinnon-increasingorder,andoutputthosestudentrecordsofwhichthegradesareinagiveninterval.InputSpecification:Eachinput......
  • PAT_Advanced Level_1080 Graduate Admission(C++_模拟_快排_卡常)
    Itissaidthatin2011,thereareabout100graduateschoolsreadytoproceedover40,000applicationsinZhejiangProvince.Itwouldhelpalotifyoucouldwriteaprogramtoautomatetheadmissionprocedure.Eachapplicantwillhavetoprovidetwograd......
  • 一文理清排序算法中的直接插入、快排和希尔排序的区别
    前言在上一篇文章中,给大家介绍了冒泡排序和选择排序,这两种算法都是排序算法。实际上排序算法还有插入、希尔、快速排序等,接下来我们就来学习一下这几种排序算法。全文大约【5400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理......
  • 排序(快排/归并/堆排/冒泡)
    912.排序数组稳定排序:如果a原本在b前面,且a==b,排序之后a仍然在b前面。非稳定排序:如果a原本在b前面,且a==b,排序之后a不一定在b前面。原地排序/非原地排序:区别在于是否使用额外的数组辅助排序快排快排不稳定平均时间复杂度\(O(n\logn)\)简单快......
  • 三路快排Java版(带思路分析)
    快速排序这里我们直接开始讲相对的最优解带随机数的三路快排好了,中间还有很多版本的快排,但是都有一些问题导致在某种极端情况下造成耗费时间极多。基础快排:在序列本身有序的情况下复杂度为O(n²)带随机数的快排:在序列本身有序的情况下复杂度为O(nlogn),但是在序列全部元素相同......
  • [SEO知识讲解] 揭秘大批量做“多个关键词快排技巧”
    本文转载自:[SEO知识讲解]揭秘大批量做“多个关键词快排技巧”更多内容请访问钻芒博客:https://www.zuanmang.net做SEO优化的人都知道,同一个关键词如果你排在竞争对手的前面,那么你的机会就更多。网站前期的策划也好,用户体验也好,都需要通过关键词,才能把真正的客户带到网站,变成实实......
  • 快排模板
    voidquick_sort(int*Num,intL,intR){if(L>=R)return;swap(Num[L],Num[L+R>>1]);inti=L;intj=R;intTemp=Num[L];while(i<j){for(;Num[j]>=Temp&&i<j;j--);......
  • 谷歌快排软件怎么用?谷歌快排系统官网
    谷歌快排软件怎么用?答案是:利用GLB外推技术实现谷歌霸屏。谷歌快速排名其实就是GLB外推,很多人不知道这个。他们只知道快排,其实快排是百度SEO的一个概念,谷歌是没有快排这种概念的。在谷歌叫GLB外推或者谷歌霸屏。如果你想了解这个技术,请阅读:什么是谷歌快排技术,谷歌排名推广霸屏的原理......