快速排序(适用于C语言初学者,附完整代码)
快速排序
基本思想
快速排序的基本思想就是寻找一个轴值,此轴值将待排序数列分成两部分,左侧的数据均小于轴值,右侧的数据均大于轴值,在从左右两侧分别找取各自的轴值,很明显用到了递归的思想,此文轴值的寻找方法为去待排数据的第一个元素。
如何将轴值(第一个数据)放到正确的位置上
以正向排序(自小到大)为例,将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语言初学者,附完整代码)相关推荐
- python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)
引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...
- Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...
- 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码
树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 文章目录 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码 一. Servo Driver ...
- Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二)
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二) 本篇目录: 五.实例中所使用的代码语法详细解释 (1).构建一个三维空间场景 (2).选择一个透视投影相机作为观察点 (a).创 ...
- Python实现自动翻译功能 - 附完整代码
Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...
- 实现最小生成树Kruskal算法(附完整代码)
实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...
- 数据结构-数组-字符串匹配:Knuth-Morris-Pratt算法(详解附完整代码)
字符串匹配 字符串抽象数据类型 字符串模式匹配 简单的字符串匹配 Knuth-Morris-Pratt算法 背景分析 失配函数 定义 实现方法 函数分析 KMP函数 实现方法 函数分析 失配信息的另一 ...
- php 3d animation,css3D+动画的例子(附完整代码)
本篇文章给大家带来的内容是关于css3D+动画的例子(附完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总 ...
- Py之pygame:有趣好玩—利用pygame库实现鱼儿自动实时目标跟踪(附完整代码)
Py之pygame:有趣好玩-利用pygame库实现鱼儿自动实时目标跟踪(附完整代码) 目录 输出结果 实现代码 输出结果 实现代码 #Py之pygame:利用pygame库实现鱼儿自动实时目标跟踪i ...
- c++代码好玩_Py之pygame:有趣好玩—利用pygame库实现鱼儿自动实时目标跟踪(附完整代码)...
Py之pygame:有趣好玩-利用pygame库实现鱼儿自动实时目标跟踪(附完整代码) 目录 输出结果 实现代码 输出结果 实现代码 #Py之pygame:利用pygame库实现鱼儿自动实时目标跟 ...
最新文章
- python绘制月亮_Python函数
- 腾讯联合国家天文台启动探星计划,优图AI可提升120倍数据处理效率
- 英特尔发布全新CPU架构 称摩尔定律未死 中国研究院迎20周年
- java script w3c study notes
- vue 同时执行两个函数 点击_【第2112期】 import { reactive } from #39;vue#39;
- 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
- 《我的青春谁做主》我想要的结局
- Graphics在java的哪个包_如何在Java中成功扩展Graphics
- mysql 做回归模型_GitHub - themycode/intelligent-test-platform: intelligent-test-platform
- UVA 10895——Matrix Transpose
- 买空间做网站_企业做网站购买空间的注意事项?
- python闹钟界面程序_利用QT写一个极简单的图形化Python闹钟程序
- Java打印菱形源码及介绍
- 《托马斯大学微积分》习题1.4——31
- 怎么看自己电脑MySQL版本_如何查看自己电脑sqlserver数据库版本
- 关于YunFile网盘的一些使用技巧与心得
- filter和find的区别
- 网页视频倍数播放代码
- Python中找出dataframe中的重复的行 DataFrame.duplicated()方法
- js为什么设置为单线程,怎么实现多线程