排序算法——归并排序
来源:互联网 发布:知行英语综合教程下载 编辑:程序博客网 时间:2024/06/17 02:27
步骤:1.递归拆分,并对两个拆分的数组进行排序
2.合并两个有序数组
时间复杂度为O(nlogn)
原理图:
代码实现:
package suanfa;public class Merge {private static int[] temp;public static void main(String[] args) {int[] a={1,7,8,9,2,3,4,5};Merge.sort(a, 0, a.length-1);for(int i=0;i<a.length;i++){System.out.print(a[i]+",");}}static void sort( int[] a,int first,int last){int mid=(last+first)/2; //以mid为中心 拆分两个数组if(last>first) //递归条件{sort(a,first,mid);//排序左边数组sort(a,mid+1,last);//排序右边数组merge(a,first,mid,last);//合并两个数组}}static void merge(int[] a,int first,int mid,int last){int[] temp=new int[a.length];//创建临时数组int i=first,j=mid+1;//定义左指针和右指针for(int k=first;k<=last;k++){temp[k]=a[k];}for(int k=first;k<=last;k++){if(i>mid) a[k]=temp[j++];if(j>last)a[k]=temp[i++];else if(less(temp[i],temp[j]))a[k]=temp[i++];else a[k]=temp[j++];}}static boolean less(int a,int b){return a<b;}static void exch(int[] a,int i,int j){int temp=a[i];a[i]=a[j];a[j]=temp;}}
阅读全文
0 0
- 排序算法—归并排序
- 排序算法—归并排序
- 排序算法总结——归并排序
- 经典排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 算法——排序之归并排序
- 排序算法——归并排序
- 排序算法系列——归并排序
- 【排序算法】——归并排序
- 排序算法——归并排序
- 经典排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 常用排序算法——归并排序
- 排序算法——归并排序
- 排序算法——归并排序
- 线程间协作的两种方式:wait、notify、notifyAll和Condition
- 接水问题
- ROT5/13/18/47 密码
- 类型的Overflow与underflow
- 集合(4)刘备 map
- 排序算法——归并排序
- 使用virtualenv Django 创建应用程序的前期配置
- 浅谈React
- 菜鸟Python(5)
- synchronized 与 Lock 区别联系
- Painting Fence[分治]
- linux学习笔记之文件基本属性
- VBA个人总结
- 分分钟get使用JAXP实现SAX解析