快速排序之C++

一、快速排序基本思路

  通过一趟排序将要排序的数据分成  两段  ,其中一段的数据均小于另外一段数据,在以此方法对两段数据相同操作(递归)

二、时间复杂度

  平均:nlogn

  最差情况:o(n^2)

三、快速排序的实现

  1. 确定分界点 q[i] 可以随机取,两个指针,一个指向头部,一个指向尾部
  2. 跑一趟后 一侧数据全部小于另一侧数据
  3. 递归处理左右两侧数据

四、代码实现C++

复制代码
#include <iostream> using namespace std; const int N = 1e6+10; int n; int q[N]; int quick_sort(int q[] ,int l ,int r ) {   if(l >= r) return 0;   int x = q[l],i = l-1 , j = r+1;   while( i < j ) {   do i ++ ; while( q[i] < x);   do j -- ; while( q[j] > x);   if( i < j ) swap(q[i],q[j]);   }   quick_sort(q , l , j);   quick_sort(q , j+1 , r); } int main() {   scanf("%d",&n);   for(int i = 0; i < n ; i++) scanf("%d",&q[i]);   quick_sort( q , 0 , n-1 );   for(int i = 0; i < n ; i++) printf("%d",q[i]);   return 0; }
复制代码

 


__EOF__

本文作者GTK
本文链接https://www.cnblogs.com/DnmyCourage/p/14869588.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   GTK  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示