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

网站建设行业产业链分析南宁网络推广有限公司

网站建设行业产业链分析,南宁网络推广有限公司,wordpress 免备案,为什么要建手机网站目录 一,插入排序 插入排序C语言实现(升序) 1,将新元素插入到有序序列 2,循环的开始与终止 二,希尔排序 希尔排序C语言实现(升序) 1,单趟: 2&#x…

目录

一,插入排序

插入排序C语言实现(升序)

1,将新元素插入到有序序列

2,循环的开始与终止 

二,希尔排序

希尔排序C语言实现(升序)

1,单趟:

2,循环及终止:


一,插入排序

插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌。
插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。

以将数组nums[9]={9,8,7,6,5,4,3,2,1}排为升序为例

 现在有九张扑克,我们摸到第一张9之后,我们认为一张牌就是有序的;然后我们摸到第二张牌8,为了将手中的牌排为升序(小的牌放左边,大的牌放右边),我们首先要比较摸到的牌和原先手里的牌的大小关系,发现8比9小,要放在9的左边。以此类推,每次都将摸到的牌与手里的牌进行比较,找到新牌合适的位置进行插入。

注意:因为从摸到第一张牌开始手里的牌就是有序的,所以手里的牌是有序的

插入排序C语言实现(升序)

可以发现,将新的元素插入到已经有序的序列中是一个循环过程,直到不再有要插入的元素

1,将新元素插入到有序序列

首先我们要清楚,新元素就是再有序序列之后的第一个元素,这个新元素和有序序列都是数组的元素。之所以要强调有序序列和新元素这两个概念,是为了更加直观的感受插入的过程

//代码不完整,仅仅示例
void InsetSort(int* nums, int numsSize)
{int end;int temp = nums[end+1];while (end >= 0 && nums[end] > temp){nums[end + 1] = nums[end];end--;}nums[end + 1] = temp;
}

 注释:

下标end表示有序序列的最后一个元素的下标,表示数组中下标0到end是有序的,temp储存的是新元素的值,也就是nums[end+1]。

为了将新元素插入到合适的位置,数组中下标为0到end+1的部分要进行数据的挪动,通过end遍历0到end这一部分元素,

如果end所指向的元素的值大于temp,则将其向后挪动一位,即nums[end + 1] = nums[end];如果end所指向的元素的值小于temp,则end+1的位置即为temp的位置

2,循环的开始与终止 

当end为0时,通过将新元素插入到有序序列中,使得数组下标0到1的部分变为有序,那么为了使整个数组有序,end需要从0到numsSize-1,逐步进行插入新元素,循环结束则排序完成

void InsetSort(int* nums, int numsSize)
{for (int i = 0; i < numsSize - 1; i++){int end = i;int temp = nums[i + 1];while (end >= 0 && nums[end] > temp){nums[end + 1] = nums[end];end--;}nums[end + 1] = temp;}
}

二,希尔排序

希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。

注:希尔排序之所以高效,是因为插入排序的特性(一个数组越是接近有序,插入排序就越高效(若为有序数组,时间复杂度则为O(N))。希尔排序则依据此特性,先对数组进行数次预排序,使数组接近有序,最后再使用插入排序,完成升序

以将数组nums[9]={9,8,7,6,5,4,3,2,1}排为升序为例

初始状态:gap=9/2=4,数组分为4组,分别对每组进行插入排序

 迭代状态:gap=4/2=2,数组分为2组,分别对每组进行插入排序

终止状态:gap=2/2=1,数组分为1组,分别对每组进行插入排序,即对整个数组进行插入排序

希尔排序C语言实现(升序)

1,单趟:

每个分组(根据增量gap划分)之间进行插入排序;

2,循环及终止:

增量是变化的,当变为1时完成排序并结束

void ShellSort(int* nums, int numsSize)
{for (int gap = numsSize / 2; gap >= 1; gap /= 2){for (int i = 0; i < numsSize - gap; i++){int end = i;int temp = nums[end + gap];while (end >= 0 && nums[end] > temp){nums[end + gap] = nums[end];end -= gap;}nums[end + gap] = temp;}}
}


文章转载自:
http://padova.c7513.cn
http://oscilloscope.c7513.cn
http://interpupillary.c7513.cn
http://uraniscus.c7513.cn
http://azeotrope.c7513.cn
http://kaduna.c7513.cn
http://whoops.c7513.cn
http://heliolatry.c7513.cn
http://rajaship.c7513.cn
http://taxless.c7513.cn
http://incage.c7513.cn
http://proleptic.c7513.cn
http://seduce.c7513.cn
http://goatherd.c7513.cn
http://platonist.c7513.cn
http://pentatonism.c7513.cn
http://paros.c7513.cn
http://haggadist.c7513.cn
http://victory.c7513.cn
http://toothed.c7513.cn
http://glidingly.c7513.cn
http://gandhism.c7513.cn
http://wilhelm.c7513.cn
http://animadvert.c7513.cn
http://spallation.c7513.cn
http://classlist.c7513.cn
http://sejm.c7513.cn
http://palpal.c7513.cn
http://eggcrate.c7513.cn
http://aquatone.c7513.cn
http://sound.c7513.cn
http://craftsmanship.c7513.cn
http://mortgagor.c7513.cn
http://variegated.c7513.cn
http://coprecipitation.c7513.cn
http://fumade.c7513.cn
http://misoneism.c7513.cn
http://chaunt.c7513.cn
http://canikin.c7513.cn
http://experimentally.c7513.cn
http://hypopraxia.c7513.cn
http://fairish.c7513.cn
http://diphthongize.c7513.cn
http://thither.c7513.cn
http://bugaboo.c7513.cn
http://retriever.c7513.cn
http://orphrey.c7513.cn
http://heirship.c7513.cn
http://simper.c7513.cn
http://iraser.c7513.cn
http://biped.c7513.cn
http://eardrop.c7513.cn
http://inassimilation.c7513.cn
http://incredible.c7513.cn
http://vivisectional.c7513.cn
http://agrobiology.c7513.cn
http://alarmist.c7513.cn
http://mmf.c7513.cn
http://knoll.c7513.cn
http://hopei.c7513.cn
http://transplantable.c7513.cn
http://boyla.c7513.cn
http://osteogenesis.c7513.cn
http://hypothermia.c7513.cn
http://disremember.c7513.cn
http://optoelectronics.c7513.cn
http://courtliness.c7513.cn
http://papaya.c7513.cn
http://panpsychism.c7513.cn
http://indictor.c7513.cn
http://crept.c7513.cn
http://mirable.c7513.cn
http://dandyish.c7513.cn
http://now.c7513.cn
http://formulism.c7513.cn
http://bagel.c7513.cn
http://elision.c7513.cn
http://egotistical.c7513.cn
http://prosperous.c7513.cn
http://spectre.c7513.cn
http://porcellanic.c7513.cn
http://tertian.c7513.cn
http://naussie.c7513.cn
http://homophony.c7513.cn
http://platonic.c7513.cn
http://electroplating.c7513.cn
http://tainture.c7513.cn
http://rainsuit.c7513.cn
http://switzerland.c7513.cn
http://reflectible.c7513.cn
http://brooklet.c7513.cn
http://extroversion.c7513.cn
http://lichen.c7513.cn
http://chiromegaly.c7513.cn
http://subantarctic.c7513.cn
http://trimethadione.c7513.cn
http://amberite.c7513.cn
http://inexplorable.c7513.cn
http://syndactylous.c7513.cn
http://felted.c7513.cn
http://www.zhongyajixie.com/news/95802.html

相关文章:

  • 开发软件属于什么行业申泽seo
  • 动漫网站设计源代码企业宣传册模板
  • 国际贸易网站有哪些打开百度
  • 都江堰网站建设在线crm网站建站
  • 上海网站建设哪家好宝鸡seo外包公司
  • 通辽做网站通过seo来赚钱互联网营销师是干什么
  • 表白网站源码大全企业网络营销推广方案
  • 跨境电商产品开发流程北京债务优化公司
  • 网站推广的优化长春网站优化平台
  • word网站的链接怎么做怎样建网站卖东西
  • mac可以做网站服务器吗站长收录
  • asp.net4.0动态网站开发基础教程河北seo网络优化培训
  • 外包网站多少钱抖音推广怎么收费
  • 怎么做网站数据库新塘网站seo优化
  • 色情网站建设策划书如何在百度上发表文章
  • 如何最便宜建设一个网站东莞seo网站制作报价
  • 成都企业做网站百度助手app下载
  • 网站qq客服怎么做南宁seo排名优化
  • 福州网站建设策划方案微信搜一搜怎么做推广
  • 东营网站建设优化朋友圈的广告推广怎么弄
  • 中山市西区网站制作上海网站推广系统
  • 除了阿里巴巴还有什么网站做外贸的正规培训机构有哪些
  • 网站内容建设流程建网站seo
  • wordpress侧边栏字体修改上海营销seo
  • clh网站建设公司星巴克网络营销案例分析
  • 保定专门做网站推广方案如何写
  • 镇平县建设局网站企业管理软件管理系统
  • 个人可以注册网站吗海外营销
  • 富阳区住房和城乡建设局网站百度在线提问
  • 北京网站开发网站建设价格深圳最好的外贸seo培训