归并排序的迭代算法
来源:互联网 发布:淘宝补单平台 编辑:程序博客网 时间:2024/06/14 16:28
在归并排序的迭代算法中,可以把输入看成是n个已排列序列,其中每个序列的长度为1。将这些序列两两归并就可以得到n/2个长度为2的序列(若n为奇数,则还有一个长度为1的序列)。对这n/2个序列进行两两归并,依此类推,直到只剩下一个序列为止。
归并排序的迭代算法可以如下实现:
#define MAX_SIZE 200void merge(int list[],int sorted[],int i,int m,int n){/* merge two sorted files:list[i]...list[m] and list[m+1]...list[n]. These files are sorted to obtain a sorted list: sorted[i]...sorted[n]*/int j,k,t;j = m + 1;k = i;while (i<=m && j<=n){if (list[i]<=list[j])sorted[k++] = list[i++];elsesorted[k++] = list[j++];}if(i>m)/*sorted[k],...,sorted[n] = list[j],...,list[n]*/for(t=j;t<=n;t++)sorted[k+t-j] = list[t];else/*sorted[k],...,sorted[n] = list[i],...,list[m]*/for (t=i;t<=m;t++)sorted[k+t-i] = list[t];}void mergePass(int list[],int sorted[],int n,int length){/* perform one pass of the merge sort. It merges adjacentpairs of subfiles from list into sorted. n is the numberof elements in the list. length is the length of the subfile*/int i,j;for (i=0;i<=n-2*length;i+=2*length)merge(list,sorted,i,i+length-1,i+2*length-1);if(i+length<n)merge(list,sorted,i,i+length-1,n-1);elsefor(j=i;j<n;j++)sorted[j] = list[j];}void mergeSort(int list[],int n){/* n is the length of list.*/int length = 1;int extra[MAX_SIZE];while(length<n){mergePass(list,extra,n,length);length *= 2;mergePass(extra,list,n,length);length *= 2;}}测试程序:
void main(){int a[10];srand((unsigned)time(NULL));for(int i=0;i<10;i++)cout<<(a[i] = rand() % (50 + 1))<<' ';cout<<endl;mergeSort(a,10);for(int i=0;i<10;i++)cout<<a[i]<<' ';cout<<'\n';}
0 0
- 归并排序的迭代算法
- java中归并排序算法的递归与迭代
- 浅析java归并排序的递归算法和迭代算法
- 33. 归并排序(迭代)
- 排序:归并排序的迭代写法与递归写法
- 归并排序的迭代及递归实现
- 归并排序的算法
- m_sort 归并排序(迭代)
- 数据结构之归并排序(迭代实现)
- 插入排序和迭代归并排序以及复杂度分析
- 归并排序--基础的算法
- 归并排序的递归算法
- 归并排序的简单算法
- 改进的归并排序算法
- 归并排序的算法实现
- 改进的归并排序算法
- 归并排序算法的实现
- 归并排序算法的理解
- cocos2d-x中的二段构造模式
- Phonegap(Cordova)3.4 + Android 环境搭建
- 杭电第1005题总结
- PowerPC 与 Linux 内核
- [IOS]来回加载大量图片内存溢出的问题
- 归并排序的迭代算法
- DWZ使用笔记-1 刷新页面
- JavaScript 的原型对象 Prototype
- 柳条鱼入队
- Winform异步解决窗体耗时操作(Action专门用于无返回值,Func专门用于有返回值)
- 理解js中的原型链
- [LeetCode14] Longest Common Prefix
- 是东莞市的火锅店发货
- IIS权限设置