排序算法之归并排序
2015-01-07 09:55
197 查看
归并排序代码如下:
#include <iostream> using namespace std; void MergeArray(int a[], int begin1, int end1, int begin2, int end2) { int begin = begin1; const int len = end2 - begin1 + 1; int b[len]; int pos = 0; while(begin1 <= end1 && begin2 <= end2) { if(a[begin1] < a[begin2]) b[pos++] = a[begin1++]; else b[pos++] = a[begin2++]; } while(begin1 <= end1) b[pos++] = a[begin1++]; while(begin2 <= end2) b[pos++] = a[begin2++]; for(int i = 0; i < len; ++i, ++begin) a[begin] = b[i]; } void MergeSort(int a[], int begin, int end) { if(begin >= end) return; int mid = (begin + end) / 2; MergeSort(a, begin, mid); MergeSort(a, mid + 1, end); MergeArray(a, begin, mid, mid + 1, end); } int main() { int a[] = { 12, 234, 34534543, 12, 1, 464, 12,78,86}; //int a[] = {}; int len = sizeof(a)/sizeof(int); MergeSort(a, 0, len - 1); for(int i = 0; i < len; ++i) cout<< a[i] << " "; }
相关文章推荐
- (应用排序算法编程7.2.2)POJ 2299 Ultra-QuickSort(使用归并排序来计算逆序对的个数)
- 经典排序算法 -----冒泡排序,插入排序,快速排序,归并排序,堆排序
- 算法 排序算法之归并排序 java实现
- (数据结构)七种常用的排序算法分析及代码实现(下)——快速排序及归并排序
- 排序算法系列-堆排序-快速排序-基数排序-简单选择排序-归并排序
- 排序算法详解【归并排序-Merge_Sort】
- 老生常谈 排序算法(JAVA)-- 归并排序
- 排序算法—归并排序
- 排序算法学习——归并排序
- 数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
- 排序算法(四)——归并排序
- C++编程练习(15)----“排序算法 之 归并排序“
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- 排序算法思想——归并排序、堆排序、shell排序
- 排序算法(三)-- 归并排序
- 排序算法——归并排序
- 排序算法-归并排序
- 排序算法之归并排序(Mergesort)解析
- 排序算法之归并排序
- 经典排序算法之归并排序