快速排序是交换排序,是冒泡排序的改进版。

    快排过程:

      1.选定一个分界值

         2.分成三个部分(小于分界部分,分界值,大于分界值部分)

                     

      3.对于分开的两部分重复上述操作,直到排序完成

      

    C/C++代码:

//分界值切分
//挖坑法:
int PartSortWakeng(int *a, int begin, int end)
{
//挖空第一个值作为分界值
int tmp = a[begin];
while (begin<end)
{
//右指针碰到小于基准值,填坑,原位置变坑
while (begin < end && a[end] >= tmp)
{
--end;
}
a[begin] = a[end]; //左指针碰到大于基准值,填坑,原位置变坑
while (begin<end && a[begin] <= tmp)
{
++begin;
}
//填右坑
a[end] = a[begin];
}
//将基准值填到坑里
a[begin] = tmp;
return tmp; //返回分界值位置 } //快排:1.找到分界值 2.切分成三部分 3.对于剩下两部分进行上述操作
void QuickSort(int *a, int left,int right)
{
//终止条件: 待排序部分只剩一个或没有元素了,已经有序
if (left >= right)
{
return;
} //分界值切分
int div = PartSort(a, left, right);
//剩余部分重复操作
QuickSort(a, left, div - 1);
QuickSort(a, div + 1, right); }

    稳定性: 不稳定

    时间复杂度: O(nlogn)

    

最新文章

  1. SQLServer修改表字段名称
  2. iOS滤镜实现之Nashville【instagram】
  3. linux mysql5.5安装与配置(转帖,在网上收集,自用)
  4. xps 文件操作笔记
  5. javaSE第二天
  6. Node.js的安装
  7. 48. Rotate Image
  8. UVa 11971 Polygon (数学,转化)
  9. UNITY打包问题
  10. xcode导出ipa的几种方式-by
  11. 网狐6603 cocos2dx 棋牌、捕鱼、休闲类游戏《李逵捕鱼》手机端完整源码分析及分享
  12. ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传
  13. send js object to webapi or mvc
  14. VS的工程宏,比如$(SolutionDir) 的含义及查找
  15. SqlServer拆分列
  16. Port Channel and VPC
  17. pycurl安装
  18. 如何修改电脑的本地网卡(非笔记本无限网卡)的mac地址
  19. MS Office CVE-2015-1641 恶意 Exploit 样本分析
  20. mysql设置合适的索引长度

热门文章

  1. AGC010
  2. nginx之TCP反向代理
  3. 牛顿迭代法(c++)
  4. NOIP 2013货车运输
  5. 【Python】解析Python中函数的基本使用
  6. WebRTC搭建前端视频聊天室——信令篇
  7. HDFS API 测试用例
  8. es查询示例
  9. bootstrap datetimepicker 添加清空按钮
  10. Flask 学习(一)简单介绍