常用排序算法实现——归并排序
2014-03-14 21:21
344 查看
归并排序:将无序数据一分两半,分别排序,然后再合并。使用递归不断分半,直到只有两个元素,然后merge。
原理:http://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
原理:http://zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
最差时间复杂度 | |
---|---|
最优时间复杂度 | |
平均时间复杂度 | |
最差空间复杂度 |
void merge(int[] unsorted, int first, int mid, int last, int[] sorted) { int i = first, j = mid; int k = 0; while (i < mid && j < last) if (unsorted[i] < unsorted[j]) sorted[k++] = unsorted[i++]; else sorted[k++] = unsorted[j++]; while (i < mid) sorted[k++] = unsorted[i++]; while (j < last) sorted[k++] = unsorted[j++]; for (int v = 0; v < k; v++) unsorted[first + v] = sorted[v]; } void merge_sort(int[] unsorted, int first, int last, int[] sorted) { if (first + 1 < last) { int mid = (first + last) / 2; Console.WriteLine("{0}-{1}-{2}", first, mid, last); merge_sort(unsorted, first, mid, sorted); merge_sort(unsorted, mid, last, sorted); merge(unsorted, first, mid, last, sorted); } }
相关文章推荐
- 常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【常用排序算法】归并排序(Java实现)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- (数据结构)七种常用的排序算法分析及代码实现(下)——快速排序及归并排序
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- 用C语言实现常用排序算法
- 常用排序算法之JavaScript实现
- (数据结构)七种常用的排序算法分析及代码实现(上)
- 常用排序算法分析与实现
- 【Java常用排序算法】归并排序(二路归并排序)
- 几种常用的排序算法(c语言实现)
- 排序算法总结(二)-------选择,堆,冒泡,快速,归并排序(java实现)
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- 常用排序算法的c++实现(冒泡,选择,插入,堆,shell,快速,归并 )与sort()对比
- 插入排序,选择排序,冒泡排序等常用排序算法(java实现)
- Python实现经典内部排序算法(归并排序)
- 用Java实现几种常用的排序算法
- 常用排序算法之MERGE法与BUTTOMUPSORT法(C语言实现)