归并排序
来源:互联网 发布:依伊芭莎淘宝 编辑:程序博客网 时间:2024/05/18 09:50
1、要实现归并排序便要有递归的思想。
2、归并排序便是利用递归将数组里面的数每次取出一半再进行排序。
3、归并排序的最好、最坏和平均时间复杂度都是O(nlogn),而空间复杂度是O(n)
下面时实现代码
#include<iostream>#include<cstdio>using namespace std;int a[10] = {3,5,91,2,6,8,7,4,11,56};int b[10];void Merge(int a[],int s,int m,int e, int temp[]){int p = 0;int a1 = s, b1 = m+1;while(a1 <= m && b1 <= e) //对两段数据进行排序 {if(a[a1] < a[b1]){temp[p] = a[a1];a1++;p++;}else{temp[p] = a[b1];b1++;p++;}}while(a1<=m) {temp[p] = a[a1];p++;a1++;}while(b1<=e){temp[p] = a[b1];p++;b1++;}for(int i = 0; i < p; i++){a[s+i] = temp[i]; }}void MergeSort(int a[],int s,int e, int temp[]){if(s<e) //用if语句判断当s>=e时自动return {int m = s+(e-s)/2; //每次对数据进行平分 MergeSort(a, s, m, temp);MergeSort(a, m+1, e, temp);Merge(a, s, m, e, temp);}}int main(){MergeSort(a,0,9,b);for(int i = 0; i < 10; i++){cout << a[i] << " ";}cout << endl;return 0; }
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 集合的实现2--使用数组
- mybatis源码环境搭建(写于2015-06-14 13:16:45)
- Spring内部方法新起一个事务,此处应有坑。
- 给定整数数组,除了一个元素之外,每个元素都会出现两次。 找到那个只出现一次的
- leetcode 463. Island Perimeter(C语言,二维数组,周长)23
- 归并排序
- Python:输入年月日判断是此年的第多少天
- cocos stuido的ccs文件加载成功 缺不显示图片的问题
- tomcat内存溢出问题记录
- 软考下午题之数据流图
- codeforce contest 103 problem D Time to Raid Cowavans(根号算法)
- 2016年总结(写于2017-01-12 21:08:08)
- 【前端面试】OSI七层模型和TCP三次握手、四次挥手
- Clique PoA consensus 建立Private chain