原理分析(从小到大):
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语言实现)相关推荐

  1. 快速排序c语言实现,快速排序的C语言代码实现

    快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...

  2. c++ 快速排序_C语言必学的12个排序算法:归并排序(第8篇)

    题外话很多童鞋感受算法比较难度,的确,算法其实和C语言本身关系不大,算法是计算机科学家利用丰富的数学和算法设计知识研究出来,如今我们只需拿来主义,学习使用即可,当然这需要一定的努力过程. [C语言必学 ...

  3. c语言对随机数进行快速排序,C语言快速排序与二分查找算法示例

    本文实例讲述了C语言二分排序与查找算法.分享给大家供大家参考,具体如下: 题目:首先产生随机数,再进行快速排序,再进行二分查找. 实现代码: #include #include #include vo ...

  4. 冒泡排序 选择排序 快速排序(C语言)

    #include <stdio.h> #include <stdlib.h> #include <time.h> //用到了time函数#define arrayS ...

  5. 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 要求就是在双向链表上实现快速排序:(.cpp文件) #include #include #define TRUE 1 #define FALSE 0 #d ...

  6. c语言程序设计现代方法快速排序,C语言实现快速排序改进版

    利用三者取中法改进快速排序,具体内容如下 实现取数组中第一个,中间和最后一个元素的中间元素作为划分元素(否则将这些元素排除在划分过程之外).大小为11或更小的数组在划分过程中被忽略,然后使用插入排序来 ...

  7. 快速排序c语言单链表代码,快速排序算法及源代码(C语言)

    快速排序是对冒泡排序的一种改进.它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排 ...

  8. c语言对随机数进行快速排序,C语言自带快速排序对比插入排序

    #include #include #include void getRandomArr (int arr[], int n); void printArr (int arr[], int n); v ...

  9. 学生成绩管理系统c语言堆排序快速排序,c语言 快速排序---归并排序----堆排序...

    //快速排序: #include #define MAX 500000 int s[MAX]; void Q_Sort(int start,int end) { int i,j,t; if ( sta ...

  10. c语言现通讯录使用快速排序,C语言实现

    文章来源:http://blog.seclibs.com/算法之递归-c语言实现/在上一篇文章里说了递归,这里就使用其中的上楼梯问题来进行代码实现,在上一篇文章里也说过了中间会有重复计算的情况,这里我 ...

最新文章

  1. 并发编程实战:取消和关闭
  2. SystemCenter2012SP1实践(16)私有云的第一个模板
  3. Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported:
  4. python opencv 批量将视频转化为图片
  5. 为什么我们总是「习惯性辩解」?
  6. Java笔记11-【异常、线程】
  7. LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
  8. php中获得客户端,服务器ip
  9. 极致业务基础开发平台
  10. 支付宝手机网站即时交易 自己封装的类
  11. 【mysql】使数据表ID连续的两个方法
  12. deeplinux 热点_在深度deepin linux系统中同时开启wifi与热点的办法
  13. 下载蓝盒插件_bilibili哔哩哔哩下载助手
  14. 再说setlocale——关于区域名称
  15. Kafka:增加Topic的分区数
  16. 泰国将于5月1日全面开放,来曼谷骑行探索老城区
  17. Python数据可视化案例:分析微信公众号数据
  18. 从底层操作系统到容器云平台:OpenCloudOS与秒云构筑完美兼容链
  19. cve-2020-7066简单解析
  20. 《基础知识——代码相关》

热门文章

  1. 新型软件生命周期模型-RUP统一过程模型 迭代增量
  2. p2p文件服务器,P2P文件传输
  3. 与你一起学习MS Project——基础篇:Project基础应用
  4. Robotium学习
  5. 虚拟打印机 服务器,PdfFactory(虚拟打印机)
  6. eclipse快捷键介绍
  7. 日志分析软件 Splunk
  8. PowerDesign license安装问题
  9. .net快速开发框架源码分享
  10. 我的Ubuntu计算机出现“黑屏”,何故?