归并排序C语言图文详解
作者:互联网
算法原理:
改归并排序将序列折半分成两个子序列,然后继续拆分,直到每个序列只有一个数据时,再将各个子序列排序后合并叠加。直到所有子序列都合并,排序完成。该算法采用分治的思想。
图解算法思路:
编辑
编辑
编辑
编辑
void Merge(int unsorted[],int left,int mid,int right,int temp[]) { int i = left;//左序列初始索引 int j = mid+1;//右序列初始索引 int k = 0;//临时数组索引 while (i <= mid && j <= right) {//将两边数组的元素进行比较,依次填进临时数组 if(unsorted[i] <= unsorted[j])//先将较小的放进去 { temp[k++] = unsorted[i++]; } else { temp[k++] = unsorted[j++]; } } while(i <= mid) {//将左边剩余元素填充进temp中 temp[k++] = unsorted[i++]; } while(j <= right) {//将右序列剩余元素填充进temp中 temp[k++] = unsorted[j++]; } k = 0; //将temp中的元素全部拷贝到原数组中 while(left <= right) { unsorted[left++] = temp[k++]; } } void MergeSort(int unsorted[],int left,int right,int temp[]) { if(left < right) { int mid = (left + right) / 2; MergeSort(unsorted, left, mid, temp); MergeSort(unsorted, mid+1, right, temp); Merge(unsorted, left, mid, right, temp); } } [点击并拖拽以移动]
标签:归并,编辑,int,C语言,索引,算法,序列,排序,图文 来源: https://www.cnblogs.com/guojianyu/p/16688014.html