排序算法-归并算法
来源:互联网 发布:nvidia smi windows 编辑:程序博客网 时间:2024/05/28 15:50
归并算法
private static void merge(int r[],int r1[],int s,int m,int t){int i=s,j=m+1,k=s;while(i<=m&&j<=t){if(r[i]<=r[j]){r1[k++]=r[i++]; //取r[i]和r[j]中较小者放入r1[k]}else{r1[k++]=r[j++];}}if(i<=m){while(i<=m){ //若第一个子序列处理完,则进行收尾处理r1[k++]=r[i++];}}else{while(j<=t){ //若第二个子序列处理完,则进行收尾处理r1[k++]=r[j++];}}}private static void mergePass(int r[],int r1[],int n,int h){int i=0;while(i<=n-2*h){ //待归并记录至少有两个长度为h的子序列merge(r,r1,i,i+h-1,i+2*h-1);i+=2*h;}if(i<n-h){merge(r,r1,i,i+h-1,n); //待归并序列中有一个长度小于h}else{for(int k=i;k<=n;k++){ //待归并序列中只剩一个子序列r1[k]=r[k];}}}public static void mergeS(int r[],int r1[],int n){int h=1;while(h<n){mergePass(r,r1,n-1,h);h=2*h;mergePass(r1,r,n-1,h);h=2*h;}}public static void main(String[] args) {int r[]={36,45,12,56};int r1[]=new int[4];System.out.println("原始数列是:");for(int i=0;i<r.length;i++){System.out.print(" "+r[i]);}mergeS(r,r1,r.length);//mergePass(r,r1,r.length-1,1);System.out.println("\n"+"新数列是:");for(int i=0;i<r.length;i++){System.out.print(" "+r[i]);}}
- 排序算法-归并算法
- 排序算法:归并算法
- 算法-归并排序算法
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法:归并排序
- 排序算法-归并排序
- 排序算法:归并排序
- 【排序算法】归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- FreeBSD、Linux、Unix的比较
- scrapy爬虫
- Linux vmstat命令实战详解
- 教你如何用C++快速生成1000万个随机数
- web service之apache axis2教程
- 排序算法-归并算法
- Android Study -- pmem driver代码分析
- extjs动态和静态加载下拉框
- 算法应用-百钱买百鸡
- 文件操作
- BMP文件结构的探索
- StaticQuene//int getLength()
- Android中获取SQL Server中的数据
- jQuery unique 数组