我的“归并算法”实现
2013-04-27 11:01
225 查看
这是我的“归并算法”Java实现!
View Code
View Code
/* * 练习:归并算法 * 功能:对一堆数据进行排序 * 作者:陈沛锐 * 时间:2013.03.25 */ package part01.chapter02; import java.util.Random; import java.util.Scanner; public class _3exercise { public static void main(String[] args) { // int[] A={1,3,5,7,9,10,2,4,6,8,10}; // MERGE myMerge = new MERGE(A, 0, 5, 10); //create data System.out.println("Please inter the data counts"); Scanner scanner=new Scanner(System.in); int leng = scanner.nextInt(); CreateDate createDate = new CreateDate(leng); int[] A = createDate.create(); //sort data by MERGE_SORT() MERGE_SORT merge_sort=new MERGE_SORT(); merge_sort.sort(A,0,leng-1); //output sorted data System.out.println("the sorted data are follow:"); for(int i=0;i<leng;i++){ System.out.print(A[i]+" "); } } } //MERGE_SORT class MERGE_SORT{ public void sort(int[] A, int p, int r) { MERGE merge = new MERGE(); int q = 0; if (p < r) { q = (p + r) / 2; sort(A, p, q); sort(A, q+1, r); merge.sort(A, p, q, r); } } } // Create date class CreateDate { int leng = 0; Random randomInt = new Random(); CreateDate(int leng) { this.leng = leng; } public int[] create() { int[] A = new int[leng]; System.out.println("Please inter the max number(<10000):"); Scanner scanner=new Scanner(System.in); int maxNum = scanner.nextInt(); if(maxNum>10000){ System.out.println("enter error!"); System.exit(0); } for (int i = 0; i < leng; i++) { A[i] = randomInt.nextInt(maxNum); } return A; } } // MERGE class for merger data class MERGE { int[] L = null; int[] R = null; // sort public void sort(int[] A, int p, int q, int r) { L = new int[q - p + 2]; R = new int[r - q + 1]; for (int i = 0; i < q - p + 1; i++) { L[i] = A[p + i]; } L[q - p + 1] = 10000;// 10000 is max number for (int j = 0; j < r - q; j++) { R[j] = A[q + 1 + j]; } R[r - q] = 10000;// 10000 is max number // test output A[p..r] // for(int i=p;i<r+1;i++){ // System.out.print(A[i]+" "); // } int j = 0; int k = 0; for (int i = 0; i < r - p + 1; i++) { if (L[j] <= R[k]) { A[p + i] = L[j]; j++; } else { A[p + i] = R[k]; k++; } } } }
相关文章推荐
- 算法系列(四)归并排序及其改进(java实现)
- pl/sql 实现归并算法
- 白话经典算法系列之五 归并排序的实现
- 【算法与数据结构】冒泡、插入、归并、堆排序、快速排序的Java实现代码
- 白话经典算法系列之五 归并排序的实现
- 归并算法之有序数组合并算法实现
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- 算法入门---java语言实现的归并排序小结
- 白话经典算法系列之五 归并排序的实现
- 归并排序的算法实现
- 白话经典算法系列之五 归并排序的实现
- 白话经典算法系列之五 归并排序的实现
- 白话经典算法系列之五 归并排序的实现
- java实现归并算法
- 归并算法的实现
- 归并排序的算法实现
- 【算法】归并--实现归并排序非递归算法
- 白话经典算法系列之五 归并排序的实现
- 二路归并算法的实现方法,用到vector容器
- 归并算法 c#实现(递归实现)