合并排序(Merge-sort)
来源:互联网 发布:淘宝助理顺丰模板下载 编辑:程序博客网 时间:2024/06/05 07:09
排序问题
输入:n个数(a1,a2,a3...)
输入:n个数(a1,a2,a3...)
输出:输入序列的一个重排列(a1',a2',a3'...),使得a1'>=a2'>=a3'....
合并排序算法基本过程:(1)假设存在两个有序的序列A、B(有序方向一致),那么将两个序列合成一个有序序列C(有序方向一致)的过程为,设定指标a、b、c分别为三个序列的指标,初始位置分别在各自序列头部,如果A[a]>B[b],则C[c]=A[a]并且a++、c++;否则C[c]=B[b],并且b++、c++;直到A、B其中某个序列达到尾部,然后将未到尾部序列的后面部分逐步复制给C;(2)一个序列只包含一个元素,设定为有序序列,且任意两个单元素序列的有序方向都是一致的;(3)将一串无序序列进行取半分解,在对已经取半的序列进行取半分解,则最终得到一系列的单元素序列,即得到一系列有序序列;(4)这一系列序列两临近进行第(1)步中的排序操作,直到合成一个完成的序列。
上述基本过程即对分治策略中的分解、解决、合并进行了简单的描述,亦递归过程的简要描述,实现代码如下:
import java.util.*;public class MergeSort {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入需要排序的一组数字并以空格隔开(5 8 9.。。):");Scanner myScanner = new Scanner(System.in);String tempStr = myScanner.nextLine();myScanner.close();String[] str = tempStr.split(" ");int[] myData = new int[str.length];int[] sortedData = new int[str.length];for(int i=0;i<str.length;i++){myData[i]=Integer.parseInt(str[i]);}MergeSort myMergeSort = new MergeSort();myMergeSort.mergesort(myData,0,myData.length-1,sortedData);for(int i=0;i<str.length;i++)System.out.print(sortedData[i]+" ");System.out.println();System.out.println("转换完成");}private void mergesort(int[] tempData,int startnum,int endnum,int[] sorted){if(startnum!=endnum){int mid=(startnum+endnum)/2;mergesort(tempData,startnum,mid,sorted);mergesort(tempData,mid+1,endnum,sorted);int i=startnum,j=mid+1,m=startnum;while((i<mid+1)&&(j<endnum+1)){if(tempData[i]>tempData[j]){sorted[m]=tempData[i];i++;m++;}else{sorted[m]=tempData[j];j++;m++;}}if((i==mid+1)&&(j!=endnum+1)){for(int n=j;n<endnum+1;n++,m++)sorted[m]=tempData[n];}else if((i!=mid+1)&&(j==endnum+1)){for(int n=i;n<mid+1;n++,m++)sorted[m]=tempData[n];}for(int n=startnum;n<=endnum;n++){tempData[n]=sorted[n];}}}}
0 0
- merge-sort(合并排序)
- 合并排序(Merge-sort)
- 排序算法---合并排序(Merge Sort)
- 合并排序算法 (Merge Sort)优化
- 归并排序(Merge sort,台湾译作:合并排序)
- 归并排序(merge sort , 合并排序)
- 合并排序连接(Merge Sort Join)-1
- 合并排序连接(Merge Sort Join)-2
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(Merge Sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- Merge Sort (归并排序)
- 归并排序(Merge sort)
- 归并排序(Merge sort)
- 归并排序(Merge Sort)
- vim 从底部开始查找关键字
- [原]Java web学习系列之 Java web开发中的Hibernate结合Servlet做分页
- C#作业
- Consistent Hash Ring
- ftp的port和pasv模式比较
- 合并排序(Merge-sort)
- 并查集算法
- LeetCode:Max Points on a Line
- 网址
- 谆茁着咨拽浊茁着昨拽壮钻庄爪追座祝踪
- PUCHAR UCHAR
- HDU 5073Galaxy
- 免费学习编程-值得收藏
- 华农ftp地址