快速排序(c语言实现)
原理分析(从小到大):
1. 首先取出一个key,一般取第一个元素
2. 从后往前遍历,如果数组中的数据小于了key,那么就将从前往后未比较过的第一个位置即fisrt位置替换为该数据
3. 然后从前往后遍历,如果数组中的数据大于了key,那么就将从后往前的第一个比较过数据位置替换
4. 直到左右两边的位置重合,说明key就找到了正确的位置,每次循环就能找到一个数的正确位置
5. 然后将key左右两边的数据分为两组,递归调用自己。
#include <stdio.h>void quickSort(int arr[], int low, int high)
{int first = low;int last = high;int key = arr[first];if(low >= high)return;while(first < last){while(first < last && arr[last] > key){last--;}arr[first] = arr[last];while(first < last && arr[first] < key){first++;}arr[last] = arr[first];}arr[first] = key;quickSort(arr, low, first-1);quickSort(arr, first+1, high);
}int main()
{int i;int a[10] = {3, 1, 11, 5, 8, 2, 0, 9, 13, 81};for(i = 0; i < 10; i++)printf("%d ", a[i]);printf("\n");quickSort(a, 0, 9);for(i = 0; i < 10; i++)printf("%d ", a[i]);printf("\n");return 0;
}
快速排序(c语言实现)相关推荐
- 快速排序c语言实现,快速排序的C语言代码实现
快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...
- c++ 快速排序_C语言必学的12个排序算法:归并排序(第8篇)
题外话很多童鞋感受算法比较难度,的确,算法其实和C语言本身关系不大,算法是计算机科学家利用丰富的数学和算法设计知识研究出来,如今我们只需拿来主义,学习使用即可,当然这需要一定的努力过程. [C语言必学 ...
- c语言对随机数进行快速排序,C语言快速排序与二分查找算法示例
本文实例讲述了C语言二分排序与查找算法.分享给大家供大家参考,具体如下: 题目:首先产生随机数,再进行快速排序,再进行二分查找. 实现代码: #include #include #include vo ...
- 冒泡排序 选择排序 快速排序(C语言)
#include <stdio.h> #include <stdlib.h> #include <time.h> //用到了time函数#define arrayS ...
- 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 要求就是在双向链表上实现快速排序:(.cpp文件) #include #include #define TRUE 1 #define FALSE 0 #d ...
- c语言程序设计现代方法快速排序,C语言实现快速排序改进版
利用三者取中法改进快速排序,具体内容如下 实现取数组中第一个,中间和最后一个元素的中间元素作为划分元素(否则将这些元素排除在划分过程之外).大小为11或更小的数组在划分过程中被忽略,然后使用插入排序来 ...
- 快速排序c语言单链表代码,快速排序算法及源代码(C语言)
快速排序是对冒泡排序的一种改进.它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排 ...
- c语言对随机数进行快速排序,C语言自带快速排序对比插入排序
#include #include #include void getRandomArr (int arr[], int n); void printArr (int arr[], int n); v ...
- 学生成绩管理系统c语言堆排序快速排序,c语言 快速排序---归并排序----堆排序...
//快速排序: #include #define MAX 500000 int s[MAX]; void Q_Sort(int start,int end) { int i,j,t; if ( sta ...
- c语言现通讯录使用快速排序,C语言实现
文章来源:http://blog.seclibs.com/算法之递归-c语言实现/在上一篇文章里说了递归,这里就使用其中的上楼梯问题来进行代码实现,在上一篇文章里也说过了中间会有重复计算的情况,这里我 ...
最新文章
- 并发编程实战:取消和关闭
- SystemCenter2012SP1实践(16)私有云的第一个模板
- Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported:
- python opencv 批量将视频转化为图片
- 为什么我们总是「习惯性辩解」?
- Java笔记11-【异常、线程】
- LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
- php中获得客户端,服务器ip
- 极致业务基础开发平台
- 支付宝手机网站即时交易 自己封装的类
- 【mysql】使数据表ID连续的两个方法
- deeplinux 热点_在深度deepin linux系统中同时开启wifi与热点的办法
- 下载蓝盒插件_bilibili哔哩哔哩下载助手
- 再说setlocale——关于区域名称
- Kafka:增加Topic的分区数
- 泰国将于5月1日全面开放,来曼谷骑行探索老城区
- Python数据可视化案例:分析微信公众号数据
- 从底层操作系统到容器云平台:OpenCloudOS与秒云构筑完美兼容链
- cve-2020-7066简单解析
- 《基础知识——代码相关》