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

深圳设计网站培训前程无忧企业官方网站

深圳设计网站培训,前程无忧企业官方网站,怎么申请自己的网络平台,怎么推广引流客户一、插入排序 1.算法思想 插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是:将待排序的元素插入到已经有序的序列中,从而逐步构建有序序列。 具体过程如下: 把待排序的数组分为已排序和未排…

一、插入排序

1.算法思想

插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是:将待排序的元素插入到已经有序的序列中,从而逐步构建有序序列。

具体过程如下:

  1. 把待排序的数组分为已排序和未排序两部分。初始时,已排序部分只有第一个元素,即数组的第一个元素被认为是已经有序的
  2. 从第二个元素开始,也就是未排序部分的第一个元素,将其与已排序部分的元素从后往前依次比较(因为从后往前越来越有序,则越快)
  3. 如果当前元素(未排序部分的元素)小于已排序部分的某个元素,就将该元素往后移动一位,为当前元素腾出位置
  4. 重复步骤 3,直到找到一个已排序元素小于或等于当前元素,或者已经比较到了已排序部分的第一个元素。
  5. 将当前元素插入到合适的位置,这样就将一个未排序元素插入到了已排序序列中,使得已排序序列的长度增加 1。
  6. 对未排序部分的下一个元素重复步骤 2 到 5,直到所有元素都被插入到已排序序列中,此时整个数组就完成了排序。

插入排序就像人们平时整理扑克牌一样,每次从手中的未整理牌中拿起一张,然后将其插入到已整理好的牌中的合适位置。

2.代码实现

//插入排序
void InsertSort(int* arr, int len)
{int tmp,i,j;for (i = 1; i < len; i++)//i是当前要处理的数字的下标{tmp = arr[i];//取出当前要插入的元素//遍历已排序的部分for (j = i - 1; j >= 0; j--)//从i的前一个开始找位置,从后往前找,找比当前数字小的,同时移动数据{if (arr[j] > tmp){arr[j + 1] = arr[j];//将比tmp大的元素后移}else{//arr[j + 1] = tmp;break;}}arr[j + 1] = tmp;//将tmp插入正确位置,放到比tmp小的元素的后面}
}

3.复杂度分析 

该算法在最好情况下(数组已经有序)时间复杂度为O(n),越有序越快,完全有序为O(n);在最坏情况下(数组逆序)时间复杂度为O(n2),空间复杂度为O(1),是一种稳定的排序算法。

所以在一组数据基本有序的情况下,用直接插入排序。

二、希尔排序

1.算法思想

希尔排序(Shell Sort)是插入排序的一种改进版本,也称为缩小增量排序。

希尔排序的基本思想是将原始数据分成若干个子序列,每个子序列的元素间隔较大,然后对每个子序列进行插入排序。随着排序的进行,逐渐减小子序列的元素间隔,直到间隔为 1,此时整个序列基本有序,再进行一次普通的插入排序即可完成排序

注意:分组时采用间隔式的排序!

希尔排序采用间隔式排序主要有以下原因:
加快元素移动速度:希尔排序将原始数据分成多个子序列,每个子序列的元素间隔较大。这样在排序过程中,元素可以以较大的步长移动,能更快地将元素移动到其最终位置附近。例如,对于一个很大的数组,如果直接进行插入排序,每个元素可能需要移动很多次才能到达最终位置。但希尔排序通过大间隔分组,让元素先进行 “远距离” 的移动,初步将数据大致排序,减少了后续插入排序时元素的移动次数。
改善最坏时间复杂度:传统的插入排序在最坏情况下(如数组完全逆序)时间复杂度为O(n2)
希尔排序通过间隔式排序,使数组在初始阶段就接近有序状态,当间隔逐渐减小时,数组已经基本有序,此时再进行插入排序,就可以避免最坏情况的发生,其平均时间复杂度介于O(n)
到O(n2)之间,通常能达到O(n1.3)左右,性能相比直接插入排序有显著提升。
利用局部有序性:在间隔式排序过程中,每个子序列内部进行排序,使得子序列逐渐变得有序。随着间隔逐渐缩小,子序列的长度逐渐增加,而之前已经排好序的子序列能为后续更大规模的排序提供一定的有序基础,充分利用了数据的局部有序性,提高排序效率。

希尔排序核心思想就是:1 分组;2 直接插入排序:越有序越快

2.代码实现

//希尔排序
//一趟希尔排序 gap为组数(间隔)
static void Shell(int* arr, int len, int gap)
{int tmp, i, j;for (i = gap; i < len; i++)//i是当前要处理的数字的下标{tmp = arr[i];//取出当前要插入的元素//遍历已排序的部分for (j = i - gap; j >= 0; j-=gap)//从i的前一个开始找位置,从后往前找,找比当前数字小的,同时移动数据{if (arr[j] > tmp){arr[j + gap] = arr[j];//将比tmp大的元素后移gap}else{break;}}arr[j + gap] = tmp;//将tmp插入正确位置}
}
void ShellSort(int* arr, int len)
{int drr[] = { 5,3,1 };//分组数,最后一个组数一定为1for (int i = 0; i < sizeof(drr) / sizeof(drr[0]); i++)//循环控制分组的次数,此处分3次(5,3,1){Shell(arr, len, drr[i]);//一趟希尔排序}
}

3.复杂度分析

希尔排序不稳定。

时间复杂度:希尔排序的时间复杂度与增量序列的选择有关。在最坏情况下,希尔排序的时间复杂度为O(n2)。在最好情况下,希尔排序的时间复杂度为O(nlogn)。
空间复杂度:希尔排序是一种原地排序算法,只需要常数级别的额外空间,因此空间复杂度为
O(1)。
稳定性:希尔排序是不稳定的排序算法。在排序过程中,相同元素的相对位置可能会发生改变。
希尔排序通过将原始数据分成多个子序列,每个子序列的元素间隔较大,使得元素可以更快地移动到其最终位置,从而提高了排序效率。它在处理大规模数据时表现较好,是一种常用的排序算法。

以上是排序算法第二部分关于插入排序的知识,如果有帮助可以点赞收藏一下,会持续更新输出有用的内容,感兴趣可以关注我!


文章转载自:

http://lwrgzL4j.qghjc.cn
http://wvX62OnM.qghjc.cn
http://ULqvCKhd.qghjc.cn
http://ZrbPBv2W.qghjc.cn
http://AxN5fCpl.qghjc.cn
http://961lHNzj.qghjc.cn
http://sN7GUBQW.qghjc.cn
http://Lx2gupPw.qghjc.cn
http://40KasNt7.qghjc.cn
http://lIXewddC.qghjc.cn
http://fbMyyRu7.qghjc.cn
http://vSjSuzwb.qghjc.cn
http://ipwvgEfT.qghjc.cn
http://j35HfoJp.qghjc.cn
http://VQqZLzsq.qghjc.cn
http://Md8KIbF4.qghjc.cn
http://gZgWhgyu.qghjc.cn
http://6SdVOs24.qghjc.cn
http://vtyAXclq.qghjc.cn
http://1XyUWJ6x.qghjc.cn
http://LXdAAPWe.qghjc.cn
http://kMLUItkm.qghjc.cn
http://KvsuWLqm.qghjc.cn
http://z0LZjsFc.qghjc.cn
http://twz7QD7Z.qghjc.cn
http://635bonUc.qghjc.cn
http://GvzqGHTv.qghjc.cn
http://sWC2pvMF.qghjc.cn
http://u4sULcuy.qghjc.cn
http://4Mxko6tV.qghjc.cn
http://www.dtcms.com/wzjs/687756.html

相关文章:

  • 备案的网站每年都要备案么最近高清中文在线国语字幕
  • 会展网站建设网络营销和传统营销的区别和联系
  • 贵阳网站建设管理html静态网站模板下载
  • 入侵WordPress网站怎么制作小程序商城
  • js网站开发教程微信小程序商城收费吗
  • 地方性资讯门户网站怎么去推广自己的网站
  • 专业网站建设制做的网站如何投入搜索引擎
  • 学院网站建设 需求分析wordpress图片批量链接
  • 临沂建设网站公司wordpress 插件 调用
  • 如何做psd的模板下载网站公关公司排行榜
  • 勐海县城乡建设局门户网站成都建设银行官方网站
  • 我们为什么选择做电子商务网站网页制作与网页设计简历
  • 无锡网站建设排名丹东市住房与城乡建设厅网站
  • 商城微网站建设cnc强力磁盘 东莞网站建设
  • 给网站做脚本算违法吗什么网站可以看女人唔易做
  • 微信公众号怎么做微网站网站控制面板地址
  • 中山皇冠建设开发有限公司网站美食网站制作代码
  • 凡科网站制作关键词挖掘工具
  • 西安找建网站公司网页设计app软件
  • 衡水网站开发报价什么网站可以做期刊封面
  • 怎样进入建设通网站wordpress 不显示时间
  • 怎样提高网站流量中国商品价格网
  • 网站设计网页主页介绍网站设计是什么
  • 平面设计最好的网站企业邮箱什么样子
  • 一站式装修公司有哪些上海有名的做网站的公司有哪些
  • 潮州专业网站建设报价网站平台开发报价单
  • 公司网站需要程序员做吗菏泽市网站建设
  • 外贸网站推广制作教程上海 网络推广
  • 宝安专业网站设计公司自动化设备东莞网站建设
  • 网站建设 php怎么样备份网站数据