排序算法(5)快速排序

思想:递归,分治法。

  • 1.先从数列中取出一个数作为基准数。
  • 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
  • 3.再对左右区间重复第二步,直到各区间只有一个数。

代码实现:

void QuickSort(int arr[], int low, int high)//low和high是上下限
{if (low < high){int temp = arr[low];int left = low, right = high;//left和right是元素的索引while (left < right){while (left < right && temp <= arr[right]) right--; //从右向左扫描,找到第一个小于temp的关键字if (left < right){arr[left] = arr[right];//放到temp左边left++;}while (left < right && arr[left] <= temp) left++;//从左向右扫描,找到第一个大于temp的关键字if (left < right){arr[right] = arr[left];//放到temp右边right--;}}//一趟排序后枢轴元素temp到达最终位置,左边元素比temp小,右边元素比temp大arr[left] = temp;QuickSort(arr, low, left - 1);//依次对两个子序列进行递归排序QuickSort(arr, left + 1, high);}
}

排序算法(5)快速排序相关推荐

  1. 十大排序算法之快速排序(两种方法)

    十大排序算法之快速排序 本文采用Java书写选择排序,其他语言类似可以借鉴着写 思想:在待排序序列中选择一个分割元素,将待排序序列中所有比分割元素关键字小的元素移动到分割元素左侧位置:将待排序序列中所 ...

  2. 排序算法之----快速排序(快速上手快速排序)

    排序算法之----快速排序(快速上手快速排序) 何为快速排序算法? 快速排序的基本思想又是什么? 其实很简单: 快速排序的基本思想是 1.先从数列中取出一个数作为基准数(这里我们的算法里面取数组最右边 ...

  3. php1到5000排序,常用的排序算法(一)--快速排序(PHP实现)

    常用的排序算法系列 快速排序 假设当前需要从小到大进行排序,快速排序的核心思路是,从当前数组中,找到一个元素作为基准比较值(key),分别从两个方向进行比较.从后往前找,比key小元素放在数组前面.然 ...

  4. 【排序算法】快速排序(C语言)

    [排序算法]-- 快速排序 目录 一.快速排序的单趟排序 1. 霍尔法 2. 挖坑法 3. 前后指针 二.快速排序 1. 排序步骤 2. 排序完整步骤图 3. 快速排序代码 3.1 递归实现 3.2 ...

  5. 快速排序算法_常用排序算法之快速排序

    点击上方蓝色 "铁匠学编程" 关注我,让我们一起学习! 前天给大家分享了归并排序,但是它不是原地排序算法,需要消耗额外的内存空间,今天给大家分享的是江湖无人不知无人不晓的" ...

  6. 排序算法-04快速排序(Python实现)

    快速排序 性质 一种基本的交换排序算法,比较常用的排序算法,简称快排. 基本的排序思路如下.基本思想为:通过一趟排序将要排序的数据分割成独立的两部分,分割点左边的数都比它小,分割点右边的数都比它大,然 ...

  7. 程序填充(指针):3数排序_排序算法之快速排序,它为什么这么快?

    本文将介绍排序算法中最常用,以及最重要的快速排序. 1 快速排序实例 快速排序由C. A. R. Hoare在1960年提出,是冒泡排序的一种改进.快速排序就跟它的名字一样,效率很快.跟冒泡排序,选择 ...

  8. 常用排序算法(二)快速排序

    快速排序 概要 本章介绍排序算法中的快速排序. 目录 1. 快速排序介绍 2. 快速排序图文说明 3. 快速排序的时间复杂度和稳定性 4. 快速排序实现 4.1 快速排序C实现 4.2 快速排序C++ ...

  9. 排序算法之快速排序详解

    一.算法介绍 快速排序:快速排序的基本思想是通过一次排序将等待的记录分成两个独立的部分,其中一部分记录的关键字小于另一部分的关键字.C部分的快速排序一直持续到整个序列被排序. 任取一个元素 (如第一个 ...

最新文章

  1. es dsl java api_ElasticSearch 系列 - RestFulAPI(DSL)
  2. 基于深度学习的文本数据特征提取方法之Glove和FastText
  3. 2pc oracle dba_2pc_pending,dba_2pc_pending视图中的信息不清除会对以后有影响吗?如何根本解决问题?...
  4. Calendar日历简单用法
  5. 通过实例理解 RabbitMQ 的基本概念
  6. C#简单实现LRU缓存
  7. loading动画_超干货 CSS3/SVG Loading动画集合
  8. C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。
  9. 如何在JSF中实现自定义密码强度指示器
  10. 二层和三层工业交换机的主要参数说明
  11. 腾讯PCG光影研究室招聘计算机视觉算法/实习生
  12. Zookeeper-Watcher(事件通知)
  13. json.dumps loads 终于区分出来了
  14. ArcMap导入图层出现General function failure问题 [转]
  15. NYOJ15括号匹配
  16. 车标识别 深度学习车标识别 神经网络车标识别 cnn车标识别 目标检测 yolo识别
  17. 微信小程序 - WXML语法与HTML比较
  18. 计算机视觉:图像分割算法综述总结
  19. java 创建线程的三种方式、创建线程池的四种方式
  20. 作为技术面试官,我在面试时考虑什么?

热门文章

  1. 面试:如何准备简历和面试?
  2. 影像去除黑边或白边的三种方法
  3. 【专业知识问答】问:发电机转子绕组匝间短路的危害、起因、处理要求和预防措施各是什么?
  4. 基于若依框架的Java项目-尚医疗(医疗管理项目)
  5. java为PDF盖(签)电子签章--关键词定位
  6. 了解JESD204B规范的各层—— 从高速ADC的角度出发
  7. C语言 字母大小互相转换 三种思路
  8. 也谈网易“有道难题”在线解谜游戏
  9. 蓝桥信用卡号验证 JAVA纯暴力破解
  10. 对于Ubuntu服务器杀毒的一次记录