归并排序
来源:互联网 发布:淘宝直通车推广费钱吗 编辑:程序博客网 时间:2024/06/18 13:57
package lsn1.sjjg.cct.cn.lsn1;import org.junit.Test;/** * 归并排序 适合链表性数据 * Created by linyaokui on 17/12/4. */public class MergeSort { @Test public void testMerge(){ int[] array=new int[]{1,3,5,7,9,4,8,10}; mergeSort(array,0,array.length-1); for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } } //归并排序 public static void mergeSort(int array[],int left,int right){ if(left==right){ return; }else{ int mid=(left+right)/2; mergeSort(array,left,mid);//排好左边 L mergeSort(array,mid+1,right);//排好右边 R merge(array,left,mid+1,right);//再对左右进行合并 D } } //归并排序 0 4 7 public static void merge(int[] array,int left,int mid,int right){ int leftSize=mid-left; int rightSize=right-mid+1; //生成数组 int[] leftArray=new int[leftSize]; int[] rightArray=new int[rightSize]; //填充左边的数组 for(int i=left;i<mid;i++){ leftArray[i-left]=array[i]; } //填充右边的数组 for(int i=mid;i<=right;i++){ rightArray[i-mid]=array[i]; } //合并数组 int i=0; int j=0; int k=left; while(i<leftSize && j<rightSize){ if(leftArray[i]<rightArray[j]){ array[k++]=leftArray[i++]; }else{ array[k++]=rightArray[j++]; } } while(i<leftSize){//左边还有数据没用完 array[k++]=leftArray[i++]; } while(j<rightSize){//右边还有数据没用完 array[k++]=rightArray[j++]; } }}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 使用java请求
- 我只是bug的搬运工之jsp 编辑预览时样式可以显示出来,而在浏览器浏览时无法显示出来!
- maven中使用默认服务器启动后出错
- Eclipse开发UI5 – 使用WebIDE生成的代码模板
- 673. Number of Longest Increasing Subsequence
- 归并排序
- C# vs C++之一:委托 vs 函数指针
- Apriori算法介绍
- Excel解析框架迭代改进
- WIN10 开机自动拨号
- 应用层笔记
- Maven-clean-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME
- 双色球案例
- linux下的软链接类似于windows下的快捷方式