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

上海松江网站设计公司优化网站关键词排名软件

上海松江网站设计公司,优化网站关键词排名软件,手游排行榜2021前十名,搅拌机东莞网站建设技术支持归并排序(Merge Sort)是一种基于分治法(Divide and Conquer)的排序算法。它的核心思想是将数组分成两个子数组,分别对子数组进行排序,然后将排序后的子数组合并成一个有序的数组。归并排序的时间复杂度为 &…

归并排序(Merge Sort)是一种基于分治法(Divide and Conquer)的排序算法。它的核心思想是将数组分成两个子数组,分别对子数组进行排序,然后将排序后的子数组合并成一个有序的数组。归并排序的时间复杂度为 𝑂(𝑛log⁡𝑛)O(nlogn),是一种稳定的排序算法。

归并排序的步骤:

  1. 分解:将数组从中间分成两个子数组,递归地对每个子数组进行排序。

  2. 合并:将两个已排序的子数组合并成一个有序的数组。

算法实现:

#include<stdio.h>
#include<stdlib.h>
void print_arr(int arr[], int n)
{for (int i = 0;i < n;i++){printf("%d ", arr[i]);}pritnf('\n');
}
//归并排序
void msort(itn arr[], itn tempArr[], int left, int right)
{//如果只有一个元素,那么就不用被继续划分//只有一个元素的区域,本身就是有序的,只需要被归并即可。if (left < right){int mid = (left + right) / 2;//递归划分左半区msort(arr, tempArr, left, mid);//递归划分右半区msort(arr, tempArr, mid + 1, right);//合并已经排序的部分merge(arr, tempArr, left, mid, right);}
}
//合并
void merge(int arr[],int tempArr, int left,int mid,int right)
{//标记左半区第一个未排序的元素int l_pos = left;//标记右半区第一个未排序的元素int r_pos = mid + 1;//临时数组元素的下标int pos=left;//合并while (l_pos <= mid && r_pos <= right){if (arr[l_pos] < arr[r_pos])tempArr[pos++] = arr[l_pos++];elsetempArr[pos++] = arr[r_pos++];}//合并左半区剩余的元素while (l_pos <= mid){tempArr[pos++] = arr[l_pos++];}//合并右半区剩余的元素while (l_pos <= right){tempArr[pos++] = arr[l_pos++];}//把临时数组中合并后的元素复制回原来的数组while (left <= right){arr[left] = tempArr[left];left++;}
}
//归并排序入口
void merge_sort(int arr[], int n)
{//分配一个辅助的数组int* tempArr = (int*)malloc(n * sizeof(int));if (tempArr){msort(arr, tempArr, 0, n - 1);free(tempArr);}else{printf("error:failed to allocate memory");}
}
int main()
{int arr[] = { 9,5,2,7,12,4,3,1,11 };int n = 9;print_arr(arr, n);merge_sort(arr, n);print_arr(arr, n);return 0;
}

时间复杂度:

  • 分解:每次将数组分成两半,需要 𝑂(log⁡𝑛)O(logn) 次分解。

  • 合并:每次合并操作需要 𝑂(𝑛)O(n) 的时间。

  • 总时间复杂度为 𝑂(𝑛log⁡𝑛)O(nlogn)。

空间复杂度:

  • 归并排序需要额外的空间来存储合并后的数组,空间复杂度为 𝑂(𝑛)O(n)

稳定性:

  • 归并排序是稳定的排序算法,因为在合并过程中,相等元素的相对顺序不会改变

适用场景:

  • 归并排序适用于需要稳定排序的场景,尤其是对链表进行排序时,归并排序的空间复杂度可以优化为 𝑂(1)O(1)

http://www.dtcms.com/wzjs/282393.html

相关文章:

  • 做网站怎样用链接赚钱海南网站推广
  • 新闻网站寄生虫怎么做googleplay安卓版下载
  • 网站如何做电脑销售卡点视频软件下载
  • 定制网站建设济南百度地图推广
  • 做网站太麻烦了网站建设找哪家公司好
  • wordpress 访问记录插件天津seo代理商
  • 邢台专业做网站公司营销软文模板
  • 网站建设 秦皇岛公司哪家好宁波seo超级外链工具
  • 京东网站建设及特点留手机号广告
  • 长沙 网站建设公司百度浏览器官方网站
  • 抚宁区建设局网站产品怎么做市场推广
  • 网站建设员招聘网络营销的现状分析
  • 学院的网站怎么做百度seo优化排名软件
  • 佛山禅城网站建设百度ai营销中国行
  • ui做的好的网站有哪些全网营销是什么意思
  • 网站开发如何隐藏参数免费的个人网页
  • 做视频网站想用家庭网络优秀企业网站欣赏
  • dedecms做地方网站sem营销推广
  • 北京集团公司排名seo优化靠谱吗
  • 上海网站制作网站制作公司seo推广公司教程
  • 亚运村网站建设百度站长工具验证
  • 如何建设一个小说网站百度收录入口提交
  • 专业零基础网站建设教学培训semaphore
  • 做网站好学吗企业专业搜索引擎优化
  • 唐山网站建设外包公司太原网站seo
  • linux主机上wordpress的url伪静态化优化技巧山东搜索引擎优化
  • 深圳的知名网站设计有哪些百度关键词点击
  • 域名停靠app大全免费下载网站入口每天三分钟新闻天下事
  • 建个网站的费用谷歌浏览器官方正版下载
  • html5网站后台模板怎么找精准客户资源