快速排序

基本思想

快速排序的基本思想就是寻找一个轴值,此轴值将待排序数列分成两部分,左侧的数据均小于轴值,右侧的数据均大于轴值,在从左右两侧分别找取各自的轴值,很明显用到了递归的思想,此文轴值的寻找方法为去待排数据的第一个元素。

如何将轴值(第一个数据)放到正确的位置上

以正向排序(自小到大)为例,将first指向待排数据的第一个元素,last指向最后一个元素,保持first不动,将last从待排数据的末尾向前推进,直到first指向的值大于last指向的值,然后将first指向的值和last指向的值交换位置,但保持first与last不变,再保持last的值不变,将first的值向后推进,直到first指向的值大于last指向的值,然后将first指向的值和last指向的值交换位置,但保持first与last不变,一直重复下去,直到first大于或等于last。

以下为完整代码

#include<stdio.h>
//将轴值(第一个数据)放到正确的位置上
int Part(int arr[],int first,int last) {int i = first,j = last,temp;while(i < j) {while(i < j&&arr[j] >= arr[i]) j--;if(i < j) {temp = arr[j];arr[j] = arr[i];arr[i] = temp;i++;}while(i < j&&arr[j] >= arr[i]) i++;if(i < j) {temp = arr[i];arr[i] = arr[j];arr[j] = temp;j--;}}return i;
}
void Quck(int arr[],int first,int last) {if(first >= last) return;else {//轴值将待排数据分成两个部分,依次对每个小部分进行排序 int pivot = Part(arr,first,last);Quck(arr,first,pivot-1);Quck(arr,pivot+1,last);}
}
int main() {int arr[6] = {10,51,2,8,3,6},i;Quck(arr,0,5);for(i = 0;i < 6;i++) {printf("%d ",arr[i]);} return 0;
}

快速排序(适用于C语言初学者,附完整代码)相关推荐

  1. python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)

    引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...

  2. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...

  3. 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码

    树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...

  4. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二) 本篇目录: 五.实例中所使用的代码语法详细解释 (1).构建一个三维空间场景 (2).选择一个透视投影相机作为观察点 (a).创 ...

  5. Python实现自动翻译功能 - 附完整代码

    Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...

  6. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  7. 数据结构-数组-字符串匹配:Knuth-Morris-Pratt算法(详解附完整代码)

    字符串匹配 字符串抽象数据类型 字符串模式匹配 简单的字符串匹配 Knuth-Morris-Pratt算法 背景分析 失配函数 定义 实现方法 函数分析 KMP函数 实现方法 函数分析 失配信息的另一 ...

  8. php 3d animation,css3D+动画的例子(附完整代码)

    本篇文章给大家带来的内容是关于css3D+动画的例子(附完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总 ...

  9. Py之pygame:有趣好玩—利用pygame库实现鱼儿自动实时目标跟踪(附完整代码)

    Py之pygame:有趣好玩-利用pygame库实现鱼儿自动实时目标跟踪(附完整代码) 目录 输出结果 实现代码 输出结果 实现代码 #Py之pygame:利用pygame库实现鱼儿自动实时目标跟踪i ...

  10. c++代码好玩_Py之pygame:有趣好玩—利用pygame库实现鱼儿自动实时目标跟踪(附完整代码)...

    Py之pygame:有趣好玩-利用pygame库实现鱼儿自动实时目标跟踪(附完整代码) 目录 输出结果 实现代码 输出结果 ​ 实现代码 #Py之pygame:利用pygame库实现鱼儿自动实时目标跟 ...

最新文章

  1. python绘制月亮_Python函数
  2. 腾讯联合国家天文台启动探星计划,优图AI可提升120倍数据处理效率
  3. 英特尔发布全新CPU架构 称摩尔定律未死 中国研究院迎20周年
  4. java script w3c study notes
  5. vue 同时执行两个函数 点击_【第2112期】 import { reactive } from #39;vue#39;
  6. 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
  7. 《我的青春谁做主》我想要的结局
  8. Graphics在java的哪个包_如何在Java中成功扩展Graphics
  9. mysql 做回归模型_GitHub - themycode/intelligent-test-platform: intelligent-test-platform
  10. UVA 10895——Matrix Transpose
  11. 买空间做网站_企业做网站购买空间的注意事项?
  12. python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
  13. Java打印菱形源码及介绍
  14. 《托马斯大学微积分》习题1.4——31
  15. 怎么看自己电脑MySQL版本_如何查看自己电脑sqlserver数据库版本
  16. 关于YunFile网盘的一些使用技巧与心得
  17. filter和find的区别
  18. 网页视频倍数播放代码
  19. Python中找出dataframe中的重复的行 DataFrame.duplicated()方法
  20. js为什么设置为单线程,怎么实现多线程

热门文章

  1. 从高中毕业后到升入大学前
  2. 树莓派 2.8寸 ili9341 tft lcd spi 屏幕显示
  3. React之受控组件
  4. 计算机教学.docx,计算机教学方法范文.docx
  5. 高精度语义地图构建的一点思考
  6. 炫云3ds Max插件场景处理方式
  7. 适合小白的Python学习教程:Python有什么用?数据化运营怎么做?
  8. 西蒙·威利森的博客对博客的建议
  9. 最适合中国国情的开源授权协议ZPL 1.0发布
  10. 量子物理学为什么这么诡异?不只是因为你不懂!