数据结构----快速排序


原理:参考趣学数据结构

代码:

#include<stdio.h>
#include<stdlib.h>
int quickSort(int a[], int l, int h) {//快速排序int i = l, j = h, p = a[l];while (i < j) {while (i<j&&a[j]>p) {//从右往左遍历查找比p更小的元素j--;}if (i < j) {a[i++] = a[j];}while (i < j&&a[i] <= p) {//从左往右遍历查找比p更大的元素i++;}if (i < j) {a[j--] = a[i];}}a[i] = p;//分界的值,左边小于等于p,右边大于preturn  i;
}
void fenZhi(int a[], int l, int h) {//分治if (l < h) {int mid = quickSort(a, l, h);//以mid为分界线,进行分治,然后递归下去排序fenZhi(a, l, mid - 1);fenZhi(a, mid + 1, h);}
}
void print7(int a[],int length){for (int i = 0; i < length; i++) {printf("%d ", a[i]);}printf("\n");
}
int main() {int a[] = { 1,4,6,7,4,3,2,11,5,7,8,9,6,55 };int length = sizeof(a) / sizeof(a[0]);printf("排序前\n");print7(a, length);fenZhi(a, 0, length - 1);printf("排序后\n");print7(a, length);system("pause");return 0;
}

测试截图:

时间复杂度O(nlogn),空间复杂度O(1)

如果存在什么问题欢迎批评指正!谢谢!

数据结构----快速排序相关推荐

  1. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解

    C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...

  2. 数据结构——快速排序

    系列文章:数据结构与算法系列--从菜鸟到入门 描述 快速排序是基于分治模式的,下面按分治模式来进行分析: 分解: 数组 A[p..r]被划分成两个(可能空)子数组,A[p..q-1]和 A[q+1.. ...

  3. [数据结构]快速排序

    一.问题描述 内部排序是一件具有重大意义的问题,许多项目的实现中都需要用到排序. 我们知道,排序的算法有许多种,每种排序算法的时间复杂度和空间复杂度不尽相同.在解决实际问题时,往往需要根据实际需要选择 ...

  4. 数据结构 快速排序的三种实现 (hoare版本 挖坑法 前后指针版本)与非递归实现

    快速排序 hoare版本 挖坑法 前后指针版本 非递归实现快速排序 快速排序:快速排序算法通过多次比较和交换来实现排序 基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另 ...

  5. 数据结构--快速排序

    快速排序是效率比较高的一种排序算法,其思想主要是递归 package mainimport "fmt"func QuickSort(left int, right int, arr ...

  6. python算法与数据结构-快速排序算法

    设定一个中间值,如下所示: low从开始位置找low是找比54小的,26比54小合格  high是从末尾位置找比54大的,如下所示: low和high重合后第一轮循环结束 第一轮递归后的结果如下所示: ...

  7. python算法与数据结构-快速排序算法(36)

    阅读目录 一.快速排序的介绍 二.快速排序的原理 三.快速排序的步骤 四.快速排序的图解 五.快速排序的python代码实现 六.快速排序的C言语代码实现 七.快速排序的时间复杂度 八.快速排序的稳定 ...

  8. 数据结构 快速排序(详解)

    快速排序 1:快速排序的思想 快速排序运用了分治的思想,即通过一趟排序 将序列分为两部分,根据选取的基准, 将比基准小的数放在基准前面,将比基准大的数放在的数放在基准后面:然后对两部分进行递归处理,以 ...

  9. 重学数据结构——快速排序,二分法查找

    每次提起快排,内心中都有点隐隐作痛. 当时腾讯的那个面试官让我写快排的前两遍排序结果,结果,我当时居然没写上来-- 这个,就是所谓的关键时刻掉链子吧,这么经典的快排都不会,真是丢死人了-- 今天在实验 ...

最新文章

  1. 菜菜sklearn——XGBoost(2)
  2. python输入输出有问题_使用pySerial从Python获取输入/输出错误
  3. fedora yum mysql_Fedora14使用yum安装mysql
  4. 从Notes迁移到Exchange Server 2010 之三
  5. 超越Linux!华为鸿蒙明年将成“第五大操作系统”,网友:何时超过iOS?
  6. 操作系统内存管理问题集锦
  7. Shiro简介+核心概念
  8. 如何阅读Cookbook技术书——如果我要把一本几百上千页的书从头读到尾,应该怎样有效阅读。...
  9. lwip连续发数据卡死_LwIP用TCP连接方式在数据量比较大协议栈卡死
  10. Leetcode每日一题:86.partition-list(分割列表)
  11. sysbench压测cpu,io,memory,threads,mutex
  12. 与大数据同行—学习和教育的未来 - 电子书下载(高清版PDF格式+EPUB格式)
  13. 运动重构(SFM)学习笔记一
  14. ThreadLocal介绍和源码解析
  15. 宇宙被超级计算机控制,宇宙被超级计算机控制, 欧空局发现一无法解释痕迹, 根本没有...
  16. H5Stream杂记-HTML中引入RTSP/RTMP源视频初学
  17. Web前端HTML、CSS测试:世界地球日
  18. java 消息队列_JAVA-消息队列
  19. 如何优雅的编写前端代码
  20. 网盘修复版新增qq支付仿城通网盘115网盘源码下载

热门文章

  1. Android之用SingleTask和TaskAffinity解决手机截取的项目启动页面问题
  2. 探讨float类型的数值,为什么两个float不能直接相等
  3. C语言之反序数组和求最大值和最小值
  4. (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
  5. python人脸识别训练模型生产_深度学习-人脸识别DFACE模型pytorch训练(二)
  6. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...
  7. 今日份凡尔赛培训满分了没?
  8. 神经网络简史:BP算法后的又一突破—信念网络
  9. kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟
  10. 11尺寸长宽 iphone_LED显示屏的尺寸规格计算方法