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

潍坊 优化型网站建设wordpress frp

潍坊 优化型网站建设,wordpress frp,网站建设标准依据,珠海建网站的网络公司1 直接插入排序 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:稳定 元素集合越接近有序,直接插入排序算法的时间效率越高 1.1直接插入排序思想 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff…

1 直接插入排序

时间复杂度:O(N^2)
空间复杂度:O(1)
稳定性:稳定

元素集合越接近有序,直接插入排序算法的时间效率越高

1.1直接插入排序思想

把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。

当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移
在这里插入图片描述

在这里插入图片描述

1.2直接插入排序代码实现

在这里插入图片描述

void InsertSort(int* a, int n)//直接插入排序:	时间复杂度:O(n*n)	空间复杂度:O(1)
{assert(a);for (int i = 1; i < n; i++)//总共插入n-1次{int temp = a[i];//将最后一个数保存下来int point = i-1;//从倒数第二个数依次往前遍历while (point >= 0)//单趟把末尾的数插入到正确的位置{if (temp < a[point])//把大的数后移(为了保有稳定性,相等的数不后移){a[point + 1] = a[point];point--;}else//因为前面已经排好序了,小于当前的就肯定小于前面的,直接break{break;}}a[point + 1] = temp;//把数插入到对应的位置}
}

2 折半插入排序

时间复杂度:O(N^2)
空间复杂度:O(1)
稳定性:稳定

此算法改变了比较元素的次数,比较的时间复杂度约为O(nlogn),但并未改变元素移动的次数,所以总体来看折半插入排序的时间复杂度仍然是O(n*n)

2.1折半插入排序思想

折半插入排序是直接插入排序的优化,在进行第n个数的插入时,对前面0~n-1个数进行二分查找,找到比第n个数小的数的下标,随后进行后移操作。

2.2折半插入排序代码实现

void InsertSort_Binary(int* a, int n)//折半插入排序:	时间复杂度:O(n*n)	空间复杂度:O(1)
{assert(a);for (int i = 1; i < n; i++)//总共插入n-1次{int temp = a[i];//将最后一个数保存下来int left = 0;int right = i - 1;int mid;while (left<=right)//单次找到小于temp的值的位置{mid = (left + right) / 2;if (temp >= a[mid]){left = mid + 1;}else{right = mid - 1;}}for (int j = i - 1; j >= left; j--)//把此位置及其之后全部后移1位{a[j + 1] = a[j];}a[left] = temp;}
}

3 希尔排序

时间复杂度:O(n^1.3)——O(n*n)
空间复杂度:O(1)
稳定性:不稳定

《数据结构(C语言版)》— 严蔚敏
在这里插入图片描述

《数据结构-用面相对象方法与C++描述》— 殷人昆在这里插入图片描述

3.1希尔排序思想

由前面我们知道,元素集合越接近有序,直接插入排序算法的时间效率越高。所以我们先对数组进行预排序。

先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。
在这里插入图片描述

3.2希尔排序代码实现

void ShellSort(int* a, int n)//希尔排序:	时间复杂度:O(n^1.3)-O(n^2)	
{int gap = n; while (gap > 1)//gap>1时相当于预排序{gap = gap / 3 + 1;//+1保证了最后一次gap一定是1 for (int i = gap; i < n ; i++)//每一轮走(n-gap)次 {int temp = a[i];//将最后一个数保存下来(每组的最后一个)int point = i - gap;//从倒数第二个数依次往前遍历(每组的倒数第二个)while (point >= 0)//单趟把末尾的数插入到正确的位置{if (temp < a[point]){a[point+gap] = a[point];point -= gap;}else{break;}}a[point+gap] = temp;}}
}
http://www.dtcms.com/a/402103.html

相关文章:

  • 先做网站 先备案市场调研报告1500字
  • 学做分类网站自己建网站需要多少钱
  • 专业制作网站价格云开发网站
  • wordpress升级说版本低青岛网站seo诊断
  • 网站关键词分隔专业做物流公司网站
  • 友情下载网站客户端 网站开发 手机软件开发
  • 无锡微信网站建设价格公司网站建设7个基本流程
  • 做个小程序需要花多少钱优化关键词步骤
  • 青海海东平安县建设局网站汕头网站建设
  • 没有网站可以做cpa广告么二级域名做外贸网站好吗
  • 开封+网站建设+网络推广随身办app下载
  • 网站怎么做用qq登录接入大创网
  • 网站做app收费标准我国档案网站建设比较分析
  • 知乎免费阅读网站软件开发人员招聘
  • wordpress能做流量站吗哪一些网站可以开户做百度广告
  • 网站注册域名位置做淘宝客的的网站有什么要求
  • 兰州新区城乡建设局网站房源网站建设
  • 中国网站设计门户网站建设工序
  • 网站评论管理怎么做的福州网站建设询q479185700上快
  • 网站推广是网站建设完成之后的长期工作。网站做整合页面
  • 贵城乡建设官方网站非专业人士可以做网站编辑的工作吗
  • 卖设备用哪个网站2345网址导航中国百年品牌
  • 免费p2p网站建设深圳建站公司有推荐的公司吗
  • 单页做网站教程wordpress移除快速发布
  • 微软网站开发wordpress5.2添加外链
  • 怎么做刷赞网站娄底网站建设开发
  • 佛山网站建设网络公司网站开发询价表模板下载
  • 公司的网站建设费应该怎么入账国内时事新闻2021最新
  • 网站开发是先做前段还是后台永湖网站建设
  • 民间it网站建设安阳区号码