排序算法_插入排序、归并算法
来源:互联网 发布:putty软件下载 编辑:程序博客网 时间:2024/05/19 10:55
//------------------插入排序---------------------------------template<typename T>void insertion_sort(T a[],int n) //n: 数组大小{double temp;int i;for(int j=1;j<n;j++){temp=a[j];i=j-1;while (i>=0&&a[i]>temp){a[i+1]=a[i];i--;}a[i+1]=temp;}}//-----------------------------------------------//---------------------归并算法-------------------------template<typename T>void merge(T a[],int p, int q , int n) //n: 数组大小{int n1=q-p+1;int n2 = n-q;int *l=new int[q-p+1];int *r=new int[n-q];for(int i =0 ;i<n1;i++){l[i]=a[p+i];}for(int j =0 ;j<n2;j++){r[j]=a[q+j+1];}l[n1]=2147483647;//当做正无穷r[n2]=2147483647;int ii=0;int jj=0;for(int k=p;k<=n;k++){if(l[ii]<=r[jj]){a[k]=l[ii];ii++;}else{a[k]=r[jj];jj++;}}}//--------------------------------------------template<typename T>void merge_sort(T a[],int p,int r){if(p<r){int q= (p+r)/2;merge_sort(a,p,q);merge_sort(a,q+1,r);merge(a,p,q,r);}}//---------------------------------------------------
例子:归并
{int a[100]; for(int i =0;i<100;i++) { a[i]=rand()%1000; } for(int i =0;i<100;i++) { printf("%d ",a[i]); if((i+1)%10==0) printf("\n"); } printf("\n"); merge_sort(a,0,99); for(int i =0;i<100;i++) { printf("%d ",a[i]); if((i+1)%10==0) printf("\n"); } printf("\n");return 0;}
- 排序算法_插入排序、归并算法
- 排序算法-归并排序_归并排序
- 排序算法_归并排序
- 算法_插入排序
- 插入、归并排序 《算法导论》
- 归并-插入混合排序算法
- 【算法】_008_归并排序_ 插入法优化
- 算法导论_归并排序
- JAVA_算法_归并排序
- 算法导论:插入排序和归并排序
- 排序算法-插入排序_希尔排序
- 数据结构(C#)_排序算法(归并排序)
- 算法_排序_插入排序
- 算法之-归并排序算法,插入排序算法
- 排序算法之插入排序、归并排序、快速排序
- 经典排序算法--插入排序 希尔排序 归并排序
- 算法导论_插入排序
- 数据结构(C#)_排序算法(插入排序)
- LeetCode - Sudoku Solver
- 重装windows后easybcd修复ubuntu启动项
- 在2013 美国计算器图形学年会(SigGraph 2013)上, WebGL成主角
- vs2008编译 wince慢的解决方案
- 业务建模七大关键应用场景
- 排序算法_插入排序、归并算法
- COLORREF和COLOR和RGB和CString的转化总结
- 记录小米设备事件获取
- ORACLE高级课程-怎样选择索引
- 怎么在 渗透无键盘 查询机
- MAC下安装与配置MySQL
- 并查集(食物链)
- Android入门计划
- 如何成为一名优秀的SEO编辑?