线性表请教
怎么样用一个数性表处理一个较大数据量的归并排序问题??
如一个最大数据个数为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;}