归并排序c语言

Posted haoxing990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序c语言相关的知识,希望对你有一定的参考价值。

 1 void mergeAdd(int arr[], int left, int mid, int right, int *temp)
2   int i = left; 3   int j = mid + 1; 4   int k = left;//临时下标 5   while (i <= mid&&j <= right) 6     if (arr[i] < arr[j]) 7       temp[k++] = arr[i++]; 8        9     else 10     temp[k++] = arr[j++]; 11      12    13   while (i <= mid) 14     temp[k++] = arr[i++]; 15   16   while (j <= right) 17     temp[k++] = arr[j++]; 18    22   memcpy(arr + left, temp + left, sizeof(int)*(right - left+1)); 23 24 void mergeSort(int arr[],int left,int right,int *temp) 25   int mid = 0; 26   if (left < right) //归并排序采用先分再并的思想,效率上为O(nlgn), 空间上为O(n),需要耗用多一倍的空间 27     mid = left + (right - left) / 2; 28     mergeSort(arr, left, mid, temp); 29     mergeSort(arr, mid + 1, right, temp); 30     mergeAdd(arr, left, mid, right, temp); 31   
32

 

以上是关于归并排序c语言的主要内容,如果未能解决你的问题,请参考以下文章

C语言数据结构——归并排序

大话数据结构C语言69 归并排序(递归和迭代实现)

归并排序c语言

[八大排序]0基础C语言实现八大排序,详解快排,归并,希尔

二路归并排序算法实现-完整C语言程序

有啥算法是相邻交换排序的(除了冒泡以外)