合并排序(java)
来源:互联网 发布:网络最短路径算法 编辑:程序博客网 时间:2024/06/16 13:32
思路:
1 设置中间值mid=(left+right)/2用来把原数组分成两个部分(left, mid)(mid+1, right)
2 不断将划分后的的数组分成两部分,直到不能再分(要求left
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner inp=new Scanner(System.in); int n=inp.nextInt(); int a[]=new int[n]; for(int i=0;i<n;i++)a[i]=inp.nextInt(); s(a,0,n-1); for(int i=0;i<n;i++)System.out.print(a[i]+" "); } public static void s(int a[],int left,int right){ if(left<right){ int mid=(left+right)/2; s(a, left, mid); s(a, mid+1, right); int b[]=new int[a.length]; m(a,b,left,mid,right); copy(a,b,left,right); } } public static void m(int a[],int b[],int left,int mid,int right){ int l=left,ll=mid,r=mid+1,rr=right,j=left; while(l<=ll&&r<=rr){ if(a[l]<=a[r])b[j++]=a[l++]; else b[j++]=a[r++]; } if(l>ll)for(int i=r;i<=rr;i++)b[j++]=a[i]; else for(int i=l;i<=ll;i++)b[j++]=a[i]; } public static void copy(int a[],int b[],int left,int right){ for(int i=left;i<=right;i++)a[i]=b[i]; }}
阅读全文
0 0
- java 合并排序算法
- java 合并排序
- java合并排序
- 合并排序-java
- Java合并排序
- 合并排序(java)
- java合并排序
- 合并排序java实现
- 合并排序算法(java)
- 合并排序 java语言描述
- JAVA 合并排序(递归算法)
- java算法4 合并排序
- java实现合并排序算法
- Java实现-合并排序数组
- java递归浅析合并排序
- Java常用排序算法之合并排序
- java 合并排序算法(二)
- 合并排序算法(java实现)
- 《FreeSWITCH: VoIP实战》:FreeSWITCH 初步
- Android关于易源数据网络接口的使用
- [Spark]Spark RDD 指南三 弹性分布式数据集(RDD)
- Warning:The `android.dexOptions.incremental` property is deprecated and it h
- next_permutation进行全排列
- 合并排序(java)
- 再识概率论
- 生成式对抗网络 NIPS 2016 课程 第 4 节
- JAVA 常用算法学习记录(穷举算法)
- CSS小记
- JAVA attach source not find
- Geometry cannot have Z values /the geometry has no z values的问题
- 在Android上使用Tensorflow
- 无锁编程的原理及应用