排序算法之归并排序(模板类)
来源:互联网 发布:足球彩票分析软件 编辑:程序博客网 时间:2024/06/05 07:24
#include<algorithm>using namespace std;template <class T>class element{public:element() { key = T(0);}~element() {};public:T key;};#pragma onceclass merge_sort{public:merge_sort(void);~merge_sort(void);// 排序算法template <class T>void Sort(element<T> list[], int n);// 归并template <class T>void Merge(element<T> list[], element<T> sorted[], int i, int m, int n);template <class T>void merge_pass(element<T> list[], element<T> sorted[], int n, int length);};template <class T>void merge_sort::Sort(element<T> list[], int n){int length = 1;element<T> *extra = new element<T>[2*n];while(length < n){merge_pass(list, extra, n , length);length *= 2;merge_pass(extra, list, n, length);length *= 2;}delete[]extra;}// 归并两个已经排序的表// 将list[i],...,list[m] 和list[m+1],...,list[n]两个有序表归并为一个有序表(sorted[i],...,sorted[n])template <class T>void merge_sort::Merge(element<T> list[], element<T> sorted[], int i, int m, int n){// merge two sorted list files: list[i],...,list[m], \// and obtain a sorted list: sorted[i],...,sorted[n]int j,k,t;j = m+1; // index for the second sublistk = i;while(i <= m && j <=n ){if(list[i].key <= list[j].key){sorted[k++] = list[i++];}else{sorted[k++] = list[j++];}}if(i > m){for(t = j; t <= n; t++){sorted[k+t-j] = list[t];}}else{for(t = i; t <= m; t++){sorted[k+t-i] = list[t];}}}template <class T>void merge_sort::merge_pass(element<T> list[], element<T> sorted[], int n, int length){int i = 0, j = 0;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, i+2*length-1);}else{for(j=i; j < n; j++){sorted[j] = list[j];}}}
0 0
- 排序算法之归并排序(模板类)
- 归并排序算法模板
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- 排序算法之归并排序
- Java 如何拷贝数组的数据?
- 内部类实现一个接口与外围类实现这个接口的区别
- 在ubuntu终端使用man
- 2016.8.15上午纪中初中部NOIP普及组比赛
- SAP FTP 相关
- 排序算法之归并排序(模板类)
- C++函数查找的一般性规律(二)
- printf格式总结
- 聊天机器人构建学习笔记-1
- 冒泡排序(Bubble Sort)
- iOS开发:网络监测
- 用XShell进行SSH连接Linux系统失败解决方法
- 新增商品
- Java开发环境搭建