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

电子商务网站硬件建设的核心营销型网站建设企业

电子商务网站硬件建设的核心,营销型网站建设企业,济宁住房和城乡建设局网站首页,建设网站准备资料归并排序(Merge Sort)是一种基于分治思想的排序算法,它将待排序数组分成两个子数组,然后对这两个子数组分别进行排序,最后将两个已排序的子数组合并成一个有序数组。归并排序是一种稳定的排序算法,具体体现…

归并排序(Merge Sort)是一种基于分治思想的排序算法,它将待排序数组分成两个子数组,然后对这两个子数组分别进行排序,最后将两个已排序的子数组合并成一个有序数组。归并排序是一种稳定的排序算法,具体体现在其时间复杂度上。

下面是使用 C++ 实现的归并排序算法:

#include <algorithm>
#include <iostream>
#include <random>
#include <vector>using namespace std;void mergeSortImplementation(vector<int>& array, int left, int right)
{if (left == right){return;}const int mid = left + ((right - left) >> 1);mergeSortImplementation(array, left, mid);mergeSortImplementation(array, mid + 1, right);vector<int> temp(right - left + 1);int p1 = left;int p2 = mid + 1;for (unsigned int i = 0; i < temp.size(); ++i){if (p1 == mid + 1){temp[i] = array[p2++];continue;}if (p2 == right + 1){temp[i] = array[p1++];continue;}if (array[p1] < array[p2]){temp[i] = array[p1++];}else{temp[i] = array[p2++];}}for (unsigned int i = left; i < right + 1; ++i){array[i] = temp[i - left];}
}void mergeSort(vector<int>& array)
{if (array.size() < 2){return;}mergeSortImplementation(array, 0, array.size() - 1);
}int main(int argc, char* argv[])
{// Create an array to test sort methodvector<int> array = {2, 3, 4, 0, 7};cout << "Before sorting: ";for (int i = 0; i < array.size(); ++i){cout << array[i] << " ";}cout << endl;mergeSort(array);cout << "After sorting: ";for (int i = 0; i < array.size(); ++i){cout << array[i] << " ";}cout << endl;return 0;
}

归并排序的实现过程可以分为两个步骤:

  • 分割子问题:将待排序数组分成两个子数组,分别对两个子数组进行排序。
  • 合并解决方案:将两个已排序的子数组合并成一个有序数组。

具体来说,归并排序的分割子问题的实现可以使用递归算法,每次将待排序数组分成两个子数组,然后对两个子数组分别进行排序;合并解决方案的实现则需要额外的存储空间,将两个已排序的子数组合并成一个有序数组。

归并排序的时间复杂度为 O(nlogn)O(nlogn)O(nlogn),其中 n 是待排序数组的长度。归并排序每次将待排序数组分成两个子数组,分别对两个子数组进行排序,然后再将两个已排序的子数组合并成一个有序数组。这个过程的时间复杂度可以表示为:

T(n)=2T(n/2)+O(n)T(n) = 2T(n/2) + O(n)T(n)=2T(n/2)+O(n)

其中 T(n) 表示对长度为 n 的数组进行归并排序的时间复杂度。通过递归展开可以得到:

T(n)=2T(n/2)+O(n)=2[2T(n/4)+O(n/2)]+O(n)=4T(n/4)+2O(n)=4[2T(n/8)+O(n/4)]+2O(n)=8T(n/8)+3O(n)=...=nT(1)+lognO(n)T(n) = 2T(n/2) + O(n)\\ = 2[2T(n/4) + O(n/2)] + O(n)\\ = 4T(n/4) + 2O(n)\\ = 4[2T(n/8) + O(n/4)] + 2O(n)\\ = 8T(n/8) + 3O(n)\\ = ...\\ = nT(1) + lognO(n)T(n)=2T(n/2)+O(n)=2[2T(n/4)+O(n/2)]+O(n)=4T(n/4)+2O(n)=4[2T(n/8)+O(n/4)]+2O(n)=8T(n/8)+3O(n)=...=nT(1)+lognO(n)

故而其最终算法时间复杂度为O(nlogn)O(nlogn)O(nlogn)

http://www.dinnco.com/news/5741.html

相关文章:

  • 网站建设费应计入什么科目站牛网是做什么的
  • 重庆市干部公示网如何进行网站性能优化?
  • 什么是网站风格策划的重点ip域名查询
  • 天津塘沽网站建设品牌设计
  • 整木全屋定制十大名牌windows优化大师好用吗
  • 制作关于灯的网站必应搜索引擎国际版
  • 淘宝做网站可靠吗百度经验怎么赚钱
  • 北京企业建立网站视频号怎么推广流量
  • 企业邮箱哪个好用和安全孝感seo
  • 北京网站建设有限公司window优化大师官网
  • 百度搜不到公司网站seo外链工具
  • 12306网站谁做的成都网站排名生客seo怎么样
  • 临朐县网站建设5月疫情最新消息
  • 做网站需要展示工厂么免费放单平台无需垫付
  • 邢台做网站推广的地方免费的自助建站
  • 网站 手机版 电脑版 怎么做商丘网站建设公司
  • 阿里巴巴怎么做公司网站刷网站关键词工具
  • 石家庄制作网站公司有哪些2345浏览器下载
  • 汕头教育的网站建设江西seo推广软件
  • 杭州建设网杭州造价平台如何做谷歌seo推广
  • 广州涉疫重点场所有更新南京百度seo代理
  • 做网站备案的公司广州seo招聘信息
  • 加强档案网站建设小程序开发工具
  • 做守望先锋h的网站怎样留别人电话在广告上
  • 做职业资格考试的网站有哪些引擎搜索技巧
  • 网站建设市场需求大南宁seo优势
  • 网站资料如何做参考文献百度推广客户端教程
  • 万网域名绑定到其它网站企业培训课程设置
  • 怎样自己做企业网站信息流广告投放平台
  • 合肥有没有做网站的单位关于软文营销的案例