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

企业集团网站建设与运营创业商机网农村工厂

企业集团网站建设与运营,创业商机网农村工厂,雨花区网站建设,jsp做网站视频教程个人主页:Lei宝啊 愿所有美好如期而遇 前言: 这两个排序在思路上有些相似,所以有人觉得插入排序和希尔排序差别不大,事实上,他们之间的差别不小,插入排序只是希尔排序的最后一步。 目录 前言:…

个人主页:Lei宝啊

愿所有美好如期而遇


前言:

这两个排序在思路上有些相似,所以有人觉得插入排序和希尔排序差别不大,事实上,他们之间的差别不小,插入排序只是希尔排序的最后一步。


目录

前言:

插入排序:

思路:

图解:

代码:

希尔排序:

思路:

图解:

代码:


插入排序:

思路:

当我们有了一个有序的数组arr,假设为升序,现在向里面插入一个新数据。

我们假设这个数组有n个元素,最后一个元素的下标我们记作end,那么要插入的这个数下标为end+1,并用tmp记下这个数的大小。

接下来,如果tmp小于arr[end],那么arr[end+1] = arr[end];  end--,

              如果tmp大于等于arr[end],那么break;   arr[end+1] = tmp;  

重复上述操作,直到end < 0或者break跳出


那么面对一个无序的数组,我们可以将第一个元素当做有序,第二个元素为新插入元素,依次类推排序

图解:

代码:

void InsertSort(int* arr, int n)
{//i == n - 2时,temp = arr[n - 1];for (int i = 0; i < n - 1; i++){int end = i;int temp = arr[end + 1];//此处画个图,end小于0跳出循环while (end >= 0){if (temp < arr[end]){//插入的值比end小,end值向后移动一位arr[end + 1] = arr[end];end--;}else{break;}}//写在循环外的原因是如果while循环不是break出来的//会导致第一个元素值重复,插入的值最后未插入进去arr[end + 1] = temp;}}

希尔排序:

思路:

希尔排序比插入排序多的就是预排序,而预排序的目的就是让大的数据/小的数据更快的被排到后面去,因为越接近有序的数据,使用插入排序时时间复杂度越接近O(N),而我们的希尔排序最后一步等同于插入排序

图解:

以代码一为例:

代码:

两个代码没有什么差别,只是一个是一组一组排,一个是并排。

代码一:
void ShellSort(int* arr, int n)
{int gap = n;while (gap > 1){//多组预排序,最后接近有序时插入排序gap /= 2;//完成一趟预排序for (int j = 0; j < gap; j++){//完成一组预排序for (int i = j; i < n - gap; i += gap){//走一组中的一个位置的预排序int end = i;int temp = arr[end + gap];while (end >= 0){if (temp < arr[end]){arr[end + gap] = arr[end];end -= gap;}else{break;}}arr[end + gap] = temp;}}}}
代码二:
void ShellSort(int* arr, int n)
{int gap = n;while (gap > 1){//多组预排序,最后接近有序时插入排序gap /= 2;//等同于上面的希尔排序,不是分组排了,而是并排for (int i = 0; i < n - gap; i++){//走一组中的一个位置的预排序int end = i;int temp = arr[end + gap];while (end >= 0){if (temp < arr[end]){arr[end + gap] = arr[end];end -= gap;}else{break;}}arr[end + gap] = temp;}	}
}

http://www.yayakq.cn/news/153612/

相关文章:

  • 58同城做网站深圳优化公司统高粱seo
  • 怎样做seo网站链接平台网站开发价格
  • 三门峡城乡建设局网站网站前台订单功能模块
  • 教育培训类网站开发常州免费网站建站模板
  • 项目网站建设青岛网站建设信息公示
  • 沈阳网站建设dnglzx工程发布平台
  • 无锡 网站建设公司什么网站可以接单做
  • 专业网站优化报价网站建设进度
  • 有域名有服务器怎么建站鲜花网站的网络营销与策划书
  • 哪个网站教做衣服网站建设维护一年费用
  • 湖北企业建站系统平台苏州工业园区公积金
  • 动漫视频网站html模板wordpress本地迁移到服务器
  • 做搜狗pc网站快速网站首页关键词如何优化
  • 建设企业网站企业网银自己搭建网站要钱吗
  • 不能上传图片到网站广州定制网站设
  • 东莞网站建设最优女性门户网站源码
  • wordpress恢复旧版宁波seo服务推广
  • 网站建设与管理学校网站建设制作文案
  • 淄博网站制作定制升级长春网站制作允许吗
  • 个人网站开发合同会员系统网站制作
  • 响应式布局网站建设国内做网站哪家好
  • 做响应式网站的流程wordpress可爱的主题下载
  • 微信公众号怎么做的跟网站似的网站推广营销运营方式
  • wordpress 同步登录自己的网站怎么优化
  • 前端开发学习网站视频网站建设
  • 电子商务的网站建设要求步骤中国商检局做备案网站
  • 定西地网站建设企业文化墙装修效果图
  • 成都建设网站那个好网站添加锚点
  • 网站的主题定位手机端网站制作
  • 为什么网站要用外链购买域名之后怎么做网站