快速排序的基本思想是:通过一次排序将要排序的数据分成两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后
再按此方法对这两部分数据分别进行快速排序,直到有序。

程序代码如下:

#include<iostream>
using namespace std;void print(int a[], int n)
{  for(int j= 0; j<n; j++){  cout<<a[j] <<"  ";  }  cout<<endl;
}  void quickSort(int a[], int low ,int high)
{if(low<high)  //判断是否满足排序条件,递归的终止条件{int i = low, j = high;   //把待排序数组元素的第一个和最后一个下标分别赋值给i,j,使用i,j进行排序;int x = a[low];    //将待排序数组的第一个元素作为哨兵,将数组划分为大于哨兵以及小于哨兵的两部分                                   while(i<j)  {while(i<j && a[j] >= x) j--;  //从最右侧元素开始,如果比哨兵大,那么它的位置就正确,然后判断前一个元素,直到不满足条件if(i<j) a[i++] = a[j];   //把不满足位次条件的那个元素值赋值给第一个元素,(也即是哨兵元素,此时哨兵已经保存在x中,不会丢失)并把i的加1while(i<j && a[i] <= x) i++; //换成左侧下标为i的元素开始与哨兵比较大小,比其小,那么它所处的位置就正确,然后判断后一个,直到不满足条件if(i<j) a[j--] = a[i];  //把不满足位次条件的那个元素值赋值给下标为j的元素,(下标为j的元素已经保存到前面,不会丢失)并把j的加1} a[i] = x;   //完成一次排序,把哨兵赋值到下标为i的位置,即前面的都比它小,后面的都比它大quickSort(a, low ,i-1);  //递归进行哨兵前后两部分元素排序 , low,high的值不发生变化,i处于中间quickSort(a, i+1 ,high);}
}int main()
{  int a[10] = {8,1,9,7,2,4,5,6,10,3};  cout<<"初始序列:";  print(a,10);  quickSort(a,0,9);  cout<<"排序结果:";  print(a,10);  system("pause");
} 

时间复杂度:

最坏情况下的时间复杂度:

平均情况的时间复杂度:

最好的时间复杂度:

空间复杂度: 

稳定性:不稳定

【快速排序】c++实现快速排序代码相关推荐

  1. python快速排序解析_快速排序python实现总结

    算法 数据结构 快速排序python实现总结 背景:数据结构与算法是IT相关的工程师一直以来的基础考察重点,很多经典书籍都是用c++或者java来实现,出于对python编码效率的喜爱,于是取sear ...

  2. c语言双向链表 快速排序,双向链表的快速排序(swift版本)

    面试经常会被问到的单向链表的快速排序or双向链表的快速排序,现在用swift写了一个双向链表的快速排序,直接上代码 获取源码 //初始化 var linkList = LinkList() linkL ...

  3. 这是一个php中快速排序字母,php 快速排序

    快速排序是以其中一个数为比较标准,其他比较的数分块处理,应用递归按相同想法处理数据 比如:4 3 6 2 1 7 8 以4为比较对象 排序为 3 2 1 6 7 8 左边为 3 2 1 右边 为 6 ...

  4. 快速排序法(思想及代码实现)

    快速排序思想: 快速排序是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对着两部分数据分别进行快速排 ...

  5. 快速排序c语言实现,快速排序的C语言代码实现

    快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...

  6. 快速排序【记录一下代码】

    本文仅用作学习记录,大神勿喷O(∩_∩)O~ 代码一.百度百科C++语言版本代码,参考数据结构p274(清华大学出版社,严蔚敏) 1 void Qsort1(int a[], int low, int ...

  7. 快速排序算法(图解+代码)

    快速排序 快速排序是基于交换类的排序.快速排序是当前公认的执行效率最高的排序算法,它的基本思想就是分治思想,使用递归来实现. 下面我们来演示一下快排的大致排序过程. 首先我们给定一个无序数组,将无序数 ...

  8. java快速排序(含快速排序代码)

    目录 一:快速排序思想 二:快速排序代码(pivot一定时先和arrays[r]先比较) 三:结果 一:快速排序思想 假设我们现在对"6 1 2 7 9 3 4 5 10 8"这个 ...

  9. 快速排序算法讲解及代码(详细)

    快速排序算法 一.序言 二.快速排序基本思想 三.具体步骤 四.具体代码 一.序言 快速排序是一种高效且使用广泛的排序算法,在很多语言的标准库中自带的排序都是快速排序.所以我们也有必要了解快排的原理以 ...

  10. 用Python实现快速排序和冒泡排序,代码+详细解析

    1.冒泡排序 冒泡排序:每一次相邻的两个数做比较,大的往后移动一位,每次循环都会把最大的值(升序)或最小的值(降序)放在末端 . # a = [7, 8, 5, 45, 91, 1, -10, 0] ...

最新文章

  1. rediscluster全局数据_设计数据密集型应用(6-7):分片、事务
  2. XamarinAndroid组件教程设置自定义子元素动画(一)
  3. 封装构造函数,用canvas写饼状图和柱状图
  4. python用字典编写购物程序_Python编写购物小程序
  5. android 1396x750设计图,移动端的适配|切图|标注
  6. 对比四大企业级linux版本_Linux家族族谱
  7. SQL Server里面如何检查没有释放的游标
  8. NVIDIA控制面板打不开
  9. visio UML图 视频学习
  10. CefSharp如何获取请求响应头Headers中的数据
  11. 网络摄像头RTSP流媒体协议视频平台EasyNVR如何进行延迟测试?
  12. [usOJ5529]小奇探险
  13. Fifo中Underflow信号的含义
  14. xilinxFPGA-VGA时序+代码实现详解
  15. 最新 RibbonCreator 2021 OFFICE功能区编辑器
  16. net的曲线救国,学习路径 MVVM (一)
  17. 【极客赠书】向Richard Stallman提问,赢取传记《若为自由故》【活动结束】
  18. 同步任务和异步任务(微任务和宏任务)
  19. MySQL连接报ERROR 2003(HY000) Can‘t connect to MySQL server on ‘xxxIP‘(113)
  20. 对timedelta64的理解

热门文章

  1. inittab文件的含义及作用
  2. javascript 常用函数大全
  3. 虚拟机和主机无法连接
  4. Json格式数据解析
  5. Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频
  6. 广东迅视 小年有哪些习俗
  7. 计算机四级考什么好一点,怎样通过计算机四级考试(强力推荐)
  8. Nodejs 快速入门教程
  9. 马云:关注饭局没有意义
  10. PAT甲级 1003 Emergency 单源Dijkstra最短路