当前位置: 首页 > news >正文

南昌网站建设公司渠道白鹭引擎做网站

南昌网站建设公司渠道,白鹭引擎做网站,室内设计去哪里学,分类网站怎么做项目文章目录 一、创始人托尼霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言#xff1a;这里所说的快速排序有三种#xff0c;第一种是霍尔大佬自创的#xff0c;还有一种叫做挖坑法#xff0c;另外一种叫前后指针法 一、创始人托尼霍尔的快速排序 1.这里我们先… 文章目录 一、创始人托尼·霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言这里所说的快速排序有三种第一种是霍尔大佬自创的还有一种叫做挖坑法另外一种叫前后指针法 一、创始人托尼·霍尔的快速排序 1.这里我们先把中间值定位数组中的首元素的值设为key变量大于key的放右边小于key的放左边 2.定义left为从数组0下标开始找大于key的数如果小于keyleft就向前走一步定义right从数组下标为n-1的位置从右向左找小于key的数从最右边的数开始如果大于keyright就向后走一步 3.这里我们还要判断谁先和谁相遇也就是谁走到相等的位置而那个人是停止的) 如果left先走那么left与right相遇的地方就是left走遇到right(相遇的地方的值是大于key的) 如果right先走那么left与right相遇的地方就是right走遇到left(相遇的地方的值是小于key的) #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h void Swap(int* p1,int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; } int QuickSort(int left,int right,int* a) {int keyi left;int end right;//判断谁先走的问题我们把大于a[keyi]的放左边//小于a[keyi]的放右边等于的话就不管//这里要判断谁先走的问题//如果left先走那么left与right相遇的地方就是left走遇到right//如果right先走那么left与right相遇的地方就是right走遇到leftwhile (left right){//右边找小while(left right a[right] a[keyi])right--;//左边找大while(left right a[left] a[keyi])left;Swap(a[left], a[right]);}Swap(a[left], a[keyi]);return left; }void TestSort(int* a, int begin,int end) {if (begin end)//当只有一个数时不用排序直接返回return;//霍尔大佬的排序int keyi QuickSort(begin, end ,a);TestSort(a, begin,keyi-1);TestSort(a, keyi1,end); } int main() {int a[] {6,1,2,7,9,3,4,5,10,8};TestSort(a, 0, sizeof(a) / sizeof(int) - 1);for (int i 0; i sizeof(a) / sizeof(int); i)printf(%d , a[i]);return 0; }这里的排序就像是二叉树的遍历大家可以参考前面的代码 排序区间【beginkeyi-1】keyi 【keyi1,end】keyi为中间值已经排好序了 二、挖坑法 步骤如下 1.这里的挖坑从a[left]开始是第一个坑然后right寻找小于keya[left]的值找到了这个坑就跑到a[right]去了同时要交换一下下标holeright 2.然后就从left开始找大于key的值找到了那么就是第二个坑hole就跳到了left的位置holeleft 3.以此类推直到leftright的时候此时的坑就在leftright的地方然后a[hole]key此时的key就是中间值不需要排了 int QuickSort(int left,int right,int* a) {int key a[left];int end right;int hole left;while (left right){//右边找小while(left right a[right] key)right--;a[hole] a[right];hole right;//左边找大while(left right a[left] key)left;a[hole] a[left];hole left;}a[hole] key;return left; }三、前后指针法 步骤如下 1.首先定义一个前指针prev和一个后指针cur 2.然后cur先向前走如果大于key那么继续向前走prev不向前走如果小于key那么prev和cur同时向前走总的来说cur一直是向前走的prev只在cur位置小于key才向前走的 3.以此类推直到curend就不走了 int QuickSort3(int left, int right, int* a) {int key a[left];int prev left;int cur left 1;while (cur right){if (a[cur] key prev ! cur)Swap(a[prev],a[cur]);cur;}//最后这里的a[prev]一定是一个小于key的值//所以需要和key这个中间值换一下以达到key已经排好序Swap(a[prev], a[left]);return prev; }
http://www.zqtcl.cn/news/205239/

相关文章:

  • 影楼网站制作网站集群建设申请
  • 国内免费的短视频素材网站自己做网站的方法
  • jsp网站建设代码电子印章在线制作生成器免费
  • 叫别人做网站后怎么更改密码一手楼房可以做哪个网站
  • 网站上的图分辨率做多少网站栏目建设存在的问题
  • 山东省建设部网站官网php 开发手机网站建设
  • 新建的网站怎么做seo优化国内最新新闻事件今天
  • ss永久免费服务器河南网站建设优化技术
  • wordpress首页源码深圳seo关键词优化外包公司
  • 网站备案换公司吗网站开发 东莞
  • 济南网站营销彩票网站建设 极云
  • 园区门户网站建设方案著名网站用什么语言做后台
  • 有经验的邵阳网站建设四川省城乡建设网查询
  • 网站打不开怎么做天猫店购买交易平台
  • 什么专业是做网站做网站设分辨率
  • 供水开发建设公司网站建筑案例网站有哪些
  • 建站平台备案wordpress 论坛
  • 朗域装饰公司电话中卫网站推广优化
  • 公司用dw做网站吗做外贸翻译用那个网站
  • 希尔顿酒店网站建设的优点网站建设添加汉语
  • 贵阳利于优化的网站wordpress模糊搜索插件
  • 河南做网站最好的公司门户网站制度建设
  • 新余 网站建设公司浏览不良网页的危害
  • 长春做网站哪里好西安有什么网页设计公司
  • 昆明网站建设精英免费自己建网页
  • 网站开发框架 开源买的有域名怎么做网站
  • 为什么做电商网站成都在哪建设网站
  • 有没有做请帖的网站南漳网站制作
  • 项目信息网站哪个好企业开展网络营销方案
  • 网站开发制作费入会计科目做毕业设计个人网站任务书