手撕代码:归并排序,并说明时间复杂性和空间复杂性-笔试面试资料

这是qklbishe.com第15851 篇笔试面试资料
提供答案分析,通过本文《手撕代码:归并排序,并说明时间复杂性和空间复杂性-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
手撕代码:归并排序,并说明时间复杂性和空间复杂性

手撕代码:归并排序,并说明时间复杂性和空间复杂性 Kawhi_Zhou
归并排序:时间复杂度O(NlogN),空间复杂度O(N)
#include<cstdio>  void merge(int *arr, int left, int middle, int right) {     int help[right - left + 1];     int p1 = left, p2 = middle + 1, i = 0;     while (p1 <= middle && p2 <= right) {         help[i++] = arr[p1] <= arr[p2] ? arr[p1++] : arr[p2++];     }     while (p1 <= middle) help[i++] = arr[p1++];     while (p2 <= right) help[i++] = arr[p2++];     for (int j = 0; j < i; ++j) arr[left + j] = help[j]; }  void mergeSort(int *arr, int left, int right) {     if (left >= right) return;     int middle = left +((right - left) >> 1);     mergeSort(arr, left, middle);     mergeSort(arr, middle + 1, right);     merge(arr, left, middle, right); }  int main() {     int n;     scanf("%d", &n);     int arr[n];     for (int i = 0; i < n; ++i) scanf("%d", &arr[i]);     mergeSort(arr, 0, n - 1);     for (int i = 0; i < n; ++i) printf("%d ", arr[i]);          return 0; }

今天 21:46:11 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 手撕代码:归并排序,并说明时间复杂性和空间复杂性-笔试面试资料

提供最优质的资源集合

立即查看 了解详情