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

天津高端网站制作cms网站建设实训报告

天津高端网站制作,cms网站建设实训报告,pxhere素材网站,杭州市城市建设学校网站前言: 本文主要讲解插入排序中的直接插入排序和希尔排序。 1、直接插入排序: 1.1基本思想 直接插入排序是一种简单的插入排序法,其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中,直到将所有记录…

前言:

本文主要讲解插入排序中的直接插入排序和希尔排序。

1、直接插入排序:

1.1基本思想

直接插入排序是一种简单的插入排序法,其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中,直到将所有记录插入完为止,得到一个新的有序序列。

实际中我们玩扑克牌时,就用了插入排序的思想。

下面的图片就是插入排序的整体过程,第一步认为5是一个有序区间,然后2比5小,就让5向后移,前面填充2,又形成一个有序的序列,以此类推……

原码:

外层的循环相当于每次插入的扑克牌,内层循环决定了这张扑克牌怎么插,插在哪里


void StraightInsert(int arr[], int n)
{//[0-end]有序,插入end+1位置的数,使得[0-end+1]序列仍然有序for (int i = 0;i<n-1;i++){int end = i;int tmp = arr[i + 1];while (end >= 0){if (arr[end] > tmp){arr[end + 1] = arr[end];end--;}elsebreak;}arr[end + 1] = tmp;}
}

时间复杂度:

时间复杂度计算的是完成程序的次数不能只看是双层循环就 武断 O(N^2)

前面讲过时间复杂度计算的是最差的情况,最差的情况就是将逆序的排成升序的,1+2+3+……n-1,这是一共累加的次数,求和发现这是一个等差数列求和,最高项就是N^2,因此时间复杂度就是O(N^2)

最好的情况下本来就是顺序,end位置的值都需要跟前面一个比较,所以就是O(N)。

2、希尔排序

2.1概念:

希尔排序是一种特殊的直接插入排序,也算是直接插入排序的优化版本。

2.2思想:

我们发现在一些直接插入排序的例子时,发现其实一些排序是很接近O(N)。

比如1,2,5,3,6

因此我们想先进行预排序(让原来的排序更接近有序),接着再进行直接插入排序

2.3预排序

何为预排序?

预排序就是分组排,间隔为gap的为一组,注意 组数==gap的值

预排序的规律:(重要)

  • 多组间隔为gap的预排序,gap从大到小
  • gap越大:大的数可以越快的到后面,小的数可以越快的到前面。
  • gap越大,预排序越不接近有序
  • gap越小,预排序越接近有序
  • gap==1时,就是直接插入排序。

那gap到底是多少呢?

这个问题较难回答,这个问题没有官方的答案。

首先gap不可能是一个固定的数,应该与数组的长度n相关,我们一般采用gap ==  n/ 2的表达式来去定义gap的值,因为要保证最后gap要被除到1为止

原码:

void ShellSort(int arr[], int n)
{int gap = n;while (gap > 1){gap = gap / 3+1;for (int i = 0; i < n - gap; i++)//这里的循环判断条件也很有讲究,正好能将多组gap排完{int end = i;int tmp = arr[end + gap];while (end >= 0){if (tmp < arr[end]){arr[end + gap] = arr[end];//将数据往后移end -= gap;}elsebreak;}arr[end + gap] = tmp;}}
}

通过代码,我们不难发现预排序大部分的代码内容与直接插入排序是一样的,只不过将1换成了gap而已

预排序需要排很多次,真的比直接插入排序快嘛?

我们自己可以比较这两种排序方式上的时间差距,经过比较我们发现,直接插入排序的时间要比希尔排序的时间多上100倍左右!(随着N的增大,时间差也会增大)

时间复杂度

首先外层的while循环执行的次数是logN,内层的循环当gap很大时,执行次数是N,当gap很小时,执行次数也接近于N,所以最终的时间复杂度O(logN*N)

注意N^2与N*logN两者并不是一个量级的,特别是当N的数非常大时。

一些书上直接给出了结论O(N^1.3)。

http://www.15wanjia.com/news/193430.html

相关文章:

  • 德州万企互联网站制作河北省保定市雄县
  • 如何做一个商城类型的网站天津外贸网站建设
  • 企业网站seo平台1号网站建设 高端网站建设
  • 建设一个视频网站wordpress网站转移
  • 对外宣传网站建设方案晋江网站建设费用
  • 百度网站收录链接提交做电商引流软文网站
  • 百度识图识别新河网站快排seo
  • 自己建网站流程二网站手
  • 一个服务器可以建多少个网站上海小程序设计
  • 外贸出口工艺品怎么做外贸网站wordpress付费注册
  • 西安凤城二路网站建设wordpress 重置管理员密码
  • 深圳市宝安区住房和建设局网站去哪儿网站排名怎么做
  • 大网站前端怎么做的软件设计工作室网站
  • 电子商城网站开发要多少钱企业平台化运营模式
  • 企业自建网站的优势网站建设中 显示 虚拟机
  • 做理财的网站有哪些问题手机网站做多宽的图片
  • 网站在线制作平台专门做正品的网站
  • 聊城建设局网站可以直接进入的舆情网站
  • 站长工具在线查询自己做网站处理图片用什么软件下载
  • 网站建设方案下载短视频app成品搭建源码免费
  • 阿里云怎么部署网站威县网站建设代理价格
  • 江苏住房与城乡建设厅网站网站是什么
  • 哪有专做飞织鞋面的网站面馆装修设计
  • wordpress插件+手机版网站建设公司十年乐云seo
  • 外贸网站都有那些建设银行网站怎么修改手机号码吗
  • 做网站可以干嘛win7 iis部署网站
  • 自己做的网站访问不了哪个网站有做视频转场的素材
  • 青浦区网站建设费用东莞网站优化专家
  • 学做网站多久能学会网络规划建设方案
  • 杭州做企业网站的公司中囯联通腾迅