归并排序-分治法
2014-04-19 15:19
155 查看
//利用归并排序对随机序列进行排序输出 import java.util.Scanner; import java.util.Random; class Sort { //归并排序 int[] a; int[] t; public void setNum( int N ){ Random rand = new Random( ); a = new int ; t = new int ; for( int i=0 ; i<N ; i++ ) a[i] = Math.abs( rand.nextInt() ) % 100 + 1; //随机获得随机数 } public void sort( int begin , int end ){ int i , j , k , mid; if( begin >= end ) //排序返回条件 return ; mid = ( begin + end ) / 2; sort( begin , mid ); //递归排序 sort( mid+1 , end ); //递归排序 i = begin; j = mid+1; k = begin; while( i<=mid && j<=end ){ //合并1 if( a[i] < a[j] ) t[k++] = a[i++]; else t[k++] = a[j++]; } while( i<=mid ) //合并2 t[k++] = a[i++]; while( j<=end ) //合并3 t[k++] = a[j++]; for( i=begin ; i<=end ; i++ ) //保存到原序列里 a[i] = t[i]; } public void print( ){ for( int i : a ) System.out.print( i + " " ); System.out.println( "" ); } public static void main( String[] args ){ int N; Sort obj = new Sort( ); Scanner in = new Scanner( System.in ); N = in.nextInt( ); obj.setNum( N ); obj.print( ); obj.sort( 0 , N-1 ); obj.print( ); } }归并排序的思想就是利用归并法进行排序,归并的步骤有:分解、解决、合并
相关文章推荐
- 分治法-归并排序
- 分治法(归并排序,X^n以及斐波那契数列)
- 分治法之归并排序(优化版)
- 归并排序-分治法
- 分治法 归并排序 加上逆序数求法
- 分治法对最大连续和以及归并排序,分治与递归实质把问题区间区域分割成几个小区间或者小分区,一直下钻到一个元素小区解决问题
- 分治法——思想到使用——归并排序、快速排序
- 分治法与归并排序
- 分治法与归并排序
- 分治法之归并排序
- 分治法—归并排序
- 分治法实现归并排序
- 一个归并排序(分治法)
- 归并排序 java(分治法)
- 分治法:归并排序分析
- 老生常谈——分治法与归并排序
- 分治法在归并排序和快速排序中的应用
- 分治法(归并排序)
- 数组中的逆序对——分治法(归并排序的应用)
- 分治法之归并排序