快速排序(代码通俗易懂,干净整洁)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、快速排序思路
- 二、快速排序代码
- 三、读入数据
- 总结
前言
快速排序的特点
1、快速排序是对冒泡算法的改进。
2、快速排序的基本思想是对要排序的数组进行划分,使左边的小于某个数,右边的大于某个数。重复执行以上划分,直到有序为止。(这里主要针对递增排序)
提示:以下是本篇文章正文内容,下面案例可供参考
一、快速排序思路
(1)定义两个变量low、high分别标识数组的第一个元素下标和最后一个元素下标。
(2)定义变量key先存储第一个数组arr[0],以后key的值都为划分后的第一个元素
(3)先从数组的后面看起,high–直到发现有一个数小于key,arr[low]=arr[high],由于此时已经确定arr[low]比key小了,所以low++。直到low=high。
(4)利用递归来实现对已经划分的数组再次划分,直到划分的左右两边都只有一个数。
二、快速排序代码
代码如下:
void QuickSort(int *arr,int low,int high){if(low<high){//不加这个条件会死循环 int i=low;int j=high;int key=arr[low];while(i<j){while(i<j&&arr[j]>=key)j--;if(i<j) arr[i++]=arr[j];//先赋值在自增 while(i<j&&arr[i]<key)i++;if(i<j)arr[j--]=arr[i];//先赋值在自增 }arr[i]=key;QuickSort(arr,low,i-1);//给左边排序 QuickSort(arr,i+1,high);//给右边排序 }}
三、读入数据
代码如下:
int main(){int a[11]={25,1,12,25,10,10,34,900,23,12,80};QuickSort(a,0,10);int i;for(i=0;i<11;i++){printf("%d ",a[i]);}return 0;}
执行结果:
1 10 10 12 12 23 25 25 34 80 900
--------------------------------
Process exited after 0.01681 seconds with return value 0
请按任意键继续. . .
总结
快速排序用到了划分的思想,递归算法。
快速排序(代码通俗易懂,干净整洁)相关推荐
- uni-app - 幸运抽奖圆形大转盘插件组件(支持后端接口确定最终奖品,可自定义轮盘宽高、颜色、字号、按钮等等,全端兼容代码干净整洁无 BUG,官方最好用的营销页面抽奖转盘源码)老虎机九宫格式抽奖机
前言 如果您需要九宫格式抽奖机(如下图所示) ,请访问:这篇文章. 网上很多文章都非常乱且一堆 BUG,本文提供无 BUG 的 "组件式" 抽奖大转盘, 您只需要复制粘贴,按照组件 ...
- 微信小程序 - [完整源码] 全屏左右菜单联动效果,左侧分类与右侧内容联动,类似美团饿了么的点餐页面 “左边菜单,右边内容“ 效果(开箱即用的示例源码,代码干净整洁且注释详细)
前言 您可能需要:微信小程序 - 外卖点餐的左右联动功能界面(购物车加减商品,购物车自动计算金额等电商功能) 网上的教程样式和逻辑都太乱了(而且 BUG 一堆.各种真机运行不兼容),直接复制下来后代码 ...
- Vue - 满意度调查评价功能,表情图片打分评分组件(非星星评分组件,类似抖音商品满意度好评、中评、差评评价功能)代码干净整洁注释详细无 BUG,无任何第三方插件依赖,完整功能实例源码插件
前言 网上的教程组件代码写的太多,而且功能不好用,主要都存在图片切换时 "闪烁" 的问题. 实现了 适用于 Vue.js / Nuxt.js 的表情图片满意度评价功能(评分组件), ...
- 微信小程序 - 满意度调查评价功能,表情图片打分评分组件(非星星评分组件,类似抖音商品满意度好评、中评、差评评价功能)代码干净整洁注释详细无 BUG,无任何第三方插件依赖,完整功能实例源码插件
前言 网上的教程组件代码写的太多,而且功能不好用,主要都存在图片切换时 "闪烁" 的问题. 实现了 适用于微信小程序的表情图片满意度评价功能(评分组件),高效无 BUG 没有任何插 ...
- Vue - 实现图片裁剪功能,并上传到服务器(内置第三方最优秀的裁剪图片组件,上传到服务器功能)干净整洁无 BUG 的示例源码与超详细的注释,兼容任意浏览器
前言 您可以滑动到文章最底部,直接克隆完整示例 Gitee 仓库,与本文教程最终效果一致. 在项目开发中,您难免会遇到图片上传到服务器之前,用户可进行裁剪的需求, 在看了网上大部分教程后,代码都非常乱 ...
- 《代码整洁之道》第一章 整洁代码 ---为什么需要整洁代码?
第一章 整洁代码 概述 什么是整洁代码? 开始走向整洁代码 概述 欢迎阅读本栏目的读者,如果你想成为更加优秀的coder,请跟随笔者的观点去解析<代码整洁之道>这本书,相信你会收获颇丰. ...
- 如何让你的 Linux 系统干净整洁
如何让你的 Linux 系统干净整洁 Linux的最大优点之一就是,使用一段时间后,它照样很稳定.Linux面临的最大挑战就是,将它安装起来,并找到并配置你完成工作所需要的软件.一旦你完成了这项任务, ...
- 二分查找算法+代码(通俗易懂简洁扼要)
知乎原文出处二分查找算法+代码(通俗易懂简洁扼要) - 知乎 欢迎关注我的知乎账号:进击的steve - 知乎 二分查找是一个可以把单值查找时间复杂度从O(n)降到O(logn)的算法. 二分查找的前 ...
- 一个简单的步骤让你的 Python 代码更干净
说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示.import 排序.PEP8 规范.今天分享一个小技巧,通过一个简单的步骤就可以让你的 Python 代码更 ...
最新文章
- java怎么建立内部类_语法 - 是否可以在Java静态中创建匿名内部类?
- Annihilate(SA)
- Markdown 图标 快捷键
- 机箱硬盘指示灯不亮_安钛克DF600 FLUX机箱:FLUX平台第一款机箱,为全民电竞热“降温”...
- keil c语言绝对值函数,keil编写C程序是不是不能在函数内定义变量啊,求大神
- UVALive 4223 Trucking 二分+spfa
- 数据分析,怎么做才够“精准”
- 1 密码学的发展历程
- 危化园区信息化管理平台(附方案+源码)
- C# label換行
- mac os 系统升级到 Catalina 版本后出现应用打不开 ,闪退,意外退出问题
- 外部接口调用失败重试
- vue+vant图片上传压缩图片大小
- JavaFX官方文档
- 美国主机网站建设中的安全性和隐私保护措施
- 第十二章 Spring Cloud Config 统一配置中心详解
- 大数据和云计算在智慧工厂中的应用
- shell 脚本如何判断文件是否存在
- python葵花宝典第15式-匿名函数、内置函数、映射函数
- Javascript打印机表白