归并排序(mergesort)
2016-08-16 10:21
399 查看
它在时间复杂度上由于我们较常用的冒泡或者查找等算法,它实现了在最坏情况下O(nlogn)
C语言实现:
#include<stdio.h> int num[100]; void merge(int low,int mid,int hi) { int temp[100]; int i,j,k; i=k=low; j=mid; while(j<hi||i<mid) { if((i<mid)&&(j>=hi||(num[i]<num[j]))) { temp[k++] = num[i++]; } if((j<hi)&&(i>=mid||num[j]<num[i])) { temp[k++] = num[j++]; } } for(i=low;i<hi;i++) { num[i] = temp[i]; } } void mergesort(int low,int hi) { int mid; if(hi - low < 2) return; else { mid = (low + hi)>>1; mergesort(low,mid); mergesort(mid,hi); } merge(low,mid,hi); } int main() { int i,j,n; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&num[i]); } mergesort(0,n); for(i=0;i<n;i++) { printf("%d ",num[i]); } } return 0; }
归并排序即采用分治策略,将一个排列先连续分割为一个个元素,这是保证了每个排列的有序性,而这个算法的关键在于要将分割好的小排列将其合并为一个有序的大排列,这是最关键的。
相关文章推荐
- 4000 【数据结构笔记】归并排序(merge_sort)-- python2.7
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(merge Sort)
- 算法-排序-归并排序(MergeSort)分析
- 归并排序(Merge Sort)
- 排序算法详解【归并排序-Merge_Sort】
- 冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort)
- 算法基础3:归并排序(Merge Sort)
- 归并排序(MergeSort)
- 归并排序(Merge Sort)+计算数列逆序数
- ※归并排序(merge sort)
- 经典排序算法以及负载平衡下的平行归并排序Parallel Merge Sort with Load Balancing
- 归并排序(merge sort)算法实现
- MergeSort 归并排序
- 归并排序(Merge Sort) 复习--附图示说明
- 例4.归并排序(mergesort.pas) pku 2299
- 归并排序(Merge Sort)
- 排序算法详解【归并排序-Merge_Sort】
- Merge Sort (归并排序)