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

手機如何做网站今日头条重大消息

手機如何做网站,今日头条重大消息,国外设计师wordpress主题,合肥做网站域名的公司文章目录 一、创始人托尼霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言:这里所说的快速排序有三种,第一种是霍尔大佬自创的,还有一种叫做挖坑法,另外一种叫前后指针法 一、创始人托尼霍尔的快速排序 1.这里我们先…

文章目录

    • 一、创始人托尼·霍尔的快速排序
    • 二、挖坑法
    • 三、前后指针法

在这里插入图片描述
所属专栏:C++初阶
引言:这里所说的快速排序有三种,第一种是霍尔大佬自创的,还有一种叫做挖坑法,另外一种叫前后指针法
在这里插入图片描述

一、创始人托尼·霍尔的快速排序

在这里插入图片描述

1.这里我们先把中间值定位数组中的首元素的值,设为key变量,大于key的放右边,小于key的放左边
2.定义left为从数组0下标开始找大于key的数,如果小于key,left就向前走一步,定义right从数组下标为n-1的位置,从右向左找小于key的数,从最右边的数开始,如果大于key,right就向后走一步
3.这里我们还要判断谁先和谁相遇(也就是谁走到相等的位置,而那个人是停止的)
如果left先走,那么left与right相遇的地方就是left走遇到right(相遇的地方的值是大于key的)
如果right先走,那么left与right相遇的地方就是right走遇到left(相遇的地方的值是小于key的)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.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, keyi+1,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;
}

在这里插入图片描述

这里的排序就像是二叉树的遍历,大家可以参考前面的代码
排序区间【begin,keyi-1】keyi 【keyi+1,end】(keyi为中间值,已经排好序了)

二、挖坑法

步骤如下:
1.这里的挖坑(从a[left]开始是第一个坑,然后right寻找小于key(a[left])的值,找到了这个坑就跑到a[right]去了,同时要交换一下下标hole=right
2.然后就从left开始找大于key的值,找到了那么就是第二个坑,hole就跳到了left的位置,hole=left
3.以此类推,直到left=right的时候,此时的坑就在left=right的地方,然后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.以此类推,直到cur>end就不走了

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.mmbaike.com/news/56599.html

相关文章:

  • 邢台市防疫办电话是多少网站seo价格
  • 菏泽北京网站建设百度推广开户费用
  • 人人秀h5制作软件下载惠州市seo广告优化营销工具
  • 做软件营销网站怎么样网络黄页推广软件哪个好
  • 网站建建设公司和网络自建成都有实力的seo团队
  • 德国域名申请网站网络营销课程培训课程
  • 个人网站主页制作网站免费
  • 长沙找人做网站市场调研的方法有哪些
  • 用明星名字做网站国内哪个搜索引擎最好用
  • 做网站哪个公司好好的竞价推广托管
  • 惠州企业网站建设选哪家百度关键词的费用是多少
  • 做网站怎么做多少钱株洲网站建设
  • 网站用哪个软件做上海企业seo
  • 网站的建设和品牌价值的关系sem和seo的关系
  • 用php做网站需要什么北京互联网营销公司
  • 南京市公共建设中心网站手机优化游戏性能的软件
  • 微网站如何做宣传产品策划方案怎么做
  • 网站做微信支付接口2345网址导航设置
  • 廊坊建设局网站6软件推广赚钱
  • 中山企业手机网站建设最有效的线上推广方式
  • 安装Wordpress个人网站2024年3月新冠高峰
  • 免费ppt模版网站企业网站模板图片
  • 2019年新电商法做网站优化大师好用吗
  • 石家庄网站建设哪家便宜搜外
  • 个人如何申请网站2021年关键词有哪些
  • wordpress 外网班级优化大师免费下载电脑版
  • 上海有哪几家做新房的网站怎么做网站排名
  • 企业形象设计论文2000字惠州seo快速排名
  • 漳州市建设局网站百度seo排名优化软件
  • 企业网站开发实训报告b站推广是什么意思