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

程序代码如下:

#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. 子查询中的空值导致的问题。
  2. cass批量选目标快捷键_大神总结100个CAD快捷键+20个CAD制图技巧,值得收藏!
  3. 回调函数 相当于线程_Java中的回调机制,这篇给你整的明明白白的
  4. Pixhawk之姿态控制篇
  5. Hive 高级编程??深入浅出学Hive
  6. 『转』数据库的委托之类型分类处理
  7. 吞吐性能翻倍!搭载了第三代Tensor Core的A100是怎么做到的?
  8. mysql官网下载页面
  9. 在DataGrid页眉上添加全选的CheckBox控件
  10. ARM开发5.3.4 基础实训( 1 ) 蜂鸣器输出控制--LPC21XX
  11. 海康摄像机激活失败解决方法
  12. html如何绘制树结构图,HTML 5 Canvas 递归画树
  13. 【PC工具】压缩包密码破解工具,暴力破解压缩包密码,zip密码获取
  14. 奔驰S400商务型升级前排座椅通风系统,夏天必备功能
  15. 窗帘可以选择这6种效果不错的颜色 - 好佳居窗帘十大品牌
  16. UniApp已经接了手机数据线,但运行工具警告 “没有检查到设备“ (华为手机为例 进行解决)
  17. 飞行棋技巧:你以为想赢只需要运气吗?
  18. 使用Spring Task实现定时任务
  19. webservice 本地测试把localhost 改成主机ip
  20. 点云配准论文阅读笔记--Comparing ICP variants on real-world data sets

热门文章

  1. win7下的快捷启动(总结)
  2. 【Access2007】修改数据库密码与输入SQL语句进行查询
  3. kali安装到u盘的弊端_受到公众关注的弊端
  4. 绘制随机不规则三角彩条——小谈EvanYou个人主页的实现
  5. 请口吐脏话的垃圾立刻滚蛋,这里不欢迎你!
  6. nginx搭建rtmp服务器
  7. SpringBoot之分页插件PageHelper的使用
  8. 使用百度api实现文本转语音功能
  9. 线段树 点更新段查询
  10. 戴尔台式机安装RedHat7