归并排序(mergesort)
来源:互联网 发布:域名注册godaddy 编辑:程序博客网 时间:2024/06/14 12:46
它在时间复杂度上由于我们较常用的冒泡或者查找等算法,它实现了在最坏情况下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;}
归并排序即采用分治策略,将一个排列先连续分割为一个个元素,这是保证了每个排列的有序性,而这个算法的关键在于要将分割好的小排列将其合并为一个有序的大排列,这是最关键的。
1 0
- mergesort 归并排序
- mergesort归并排序
- MergeSort归并排序
- 归并排序--MergeSort
- MergeSort归并排序
- 归并排序(MergeSort)
- Mergesort-归并排序
- 归并排序算法 MergeSort
- 归并排序--MergeSort
- mergeSort - 归并排序
- 归并排序 MergeSort
- MergeSort归并排序
- 归并排序 MergeSort
- 归并排序(MergeSort)
- Mergesort-归并排序
- 【MergeSort】归并排序
- 归并排序(MergeSort)
- mergesort归并排序
- POJ 3070 Fibonacci(矩阵快速幂)
- 设计模式之Builder模式
- Spring Security教程第五部分-数据库连接登录
- 极光推送-JAVA服务器端推送代码
- Leapmotion 感悟
- 归并排序(mergesort)
- BZOJ 1050 最小生成树
- spring的自动装配
- cms系统数据调取方法
- 并查集详解
- 图的深度遍历
- LeetCode 287 Find the Duplicate Number (二分)
- 一年多了,回头想想这一年对it行业的感受
- jeecg集成实现websocket