首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

线性表请问

2012-02-19 
线性表请教怎么样用一个数性表处理一个较大数据量的归并排序问题??如一个最大数据个数为50000的数据的归并

线性表请教
怎么样用一个数性表处理一个较大数据量的归并排序问题??
如一个最大数据个数为50000的数据的归并排序。。
数据个数由输入确定
不胜感激!!!
(希望能给出程序)

[解决办法]
就是普通的合并排序算法。50000个元素其实不算大量数据。
以下是代码:

C/C++ code
#include <iostream.h>template <class T>void merge_array(T* array, int begin, int mid, int end) {    T *temp = new T[end - begin + 2];    int i = begin,j = mid+1,k = 0;    while(i <= mid && j <= end) {        if(array[i] > array[j])            temp[k++] = array[j++];        else             temp[k++] = array[i++];        if(i > mid || j > end)            break;    }    if(i > mid)         while(j <= end) temp[k++] = array[j++];    else        while(i <= mid) temp[k++] = array[i++];    for(i = begin, k = 0; i <= end; i++)        array[i] = temp[k++];    delete[] temp;}template <class T>void merge_sort(T* array, int begin, int end) {    if(begin < end) {        int mid = (begin + end) / 2;        merge_sort(array, begin, mid);        merge_sort(array, mid+1, end);        merge_array(array, begin, mid, end);    }}int main() {    int n, *array;    cin >> n;    array = new int[n];        for(int i = 0; i < n; i++)        cin >> array[i];    merge_sort(array, 0, n - 1);        for(i = 0; i < n; i++)        cout << array[i] << " ";         delete[] array;    return 0;} 

热点排行