归并排序
来源:互联网 发布:淘宝为什么关闭弘化社 编辑:程序博客网 时间:2024/05/29 03:52
#include<iostream>using namespace std;void swap(int *a,int *b){int tmp = *a;*a = *b;*b = tmp;}//分治法,将数组分成两组A,B若这两组内数据都是有序的,将两个有序数列合并void merge_arr(int a[],int first,int mid,int last,int tmp[]){int i =first,j = mid + 1;int m = mid, n = last;int k = 0;while(i<=m&&j<=n){if(a[i]<a[j])tmp[k++] = a[i++];if(a[i]>a[j])tmp[k++] = a[j++];}while(i<=m)tmp[k++] = a[i++];while(j<=n)tmp[k++] = a[j++];for(i = 0;i<k;i++)a[first+i] = tmp[i];//这里first要加上,因为前面first个数据已经有序}void merge_sort(int a[],int first,int last,int tmp[]){if(first<last){int mid = (first + last)/2;merge_sort(a,first,mid,tmp);merge_sort(a,mid+1,last,tmp);merge_arr(a,first,mid,last,tmp);}}void main(){int a[11] = {1,3,5,7,2,8,4,9,6,0,10};int tmp[11] = {0};merge_sort(a,0,10,tmp);for(int i = 0;i<11;i++){printf("%d \n",a[i]);}system("pause");return;}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- hibernate延迟加载demo
- 快排
- java.util.concurrent.locks与synchronized及其异同
- c#入门第一章
- 洛谷 P1156 垃圾陷阱
- 归并排序
- 安卓中关于对话框的四种写法
- JSP和JS的区别(新手必读)
- HDU - 3068 最长回文(manacher)
- C primer plus 第七章 练习8:修改练习7,假设a,使程序提供一个选择工资等级的菜单,用switch选择工资等级,程序运行的开头应该像下面这样:
- hdu 4825 字典树
- weblogic启动时提示不能访问JRE
- Android控件架构(Android群英传)
- Java基础之比较器 Comparable和Comparator