我的“歸併演算法”實現

來源:互聯網
上載者:User

這是我的“歸併演算法”Java實現!

 

View Code

  1 /*  2  * 練習:歸併演算法  3  * 功能:對一堆資料進行排序  4  * 作者:陳沛銳  5  * 時間:2013.03.25  6  */  7 package part01.chapter02;  8   9 import java.util.Random; 10 import java.util.Scanner; 11  12 public class _3exercise { 13     public static void main(String[] args) { 14         // int[] A={1,3,5,7,9,10,2,4,6,8,10}; 15         // MERGE myMerge = new MERGE(A, 0, 5, 10); 16         //create data 17         System.out.println("Please inter the data counts"); 18         Scanner scanner=new Scanner(System.in); 19         int leng = scanner.nextInt(); 20         CreateDate createDate = new CreateDate(leng); 21         int[] A = createDate.create(); 22         //sort data by MERGE_SORT() 23         MERGE_SORT merge_sort=new MERGE_SORT(); 24         merge_sort.sort(A,0,leng-1); 25         //output sorted data 26         System.out.println("the sorted data are follow:"); 27         for(int i=0;i<leng;i++){ 28             System.out.print(A[i]+" "); 29         } 30     } 31  32  33 } 34 //MERGE_SORT 35 class MERGE_SORT{ 36         public void sort(int[] A, int p, int r) { 37         MERGE merge = new MERGE(); 38         int q = 0; 39         if (p < r) { 40             q = (p + r) / 2; 41             sort(A, p, q); 42             sort(A, q+1, r); 43             merge.sort(A, p, q, r); 44         } 45     } 46 } 47 // Create date 48 class CreateDate { 49     int leng = 0; 50     Random randomInt = new Random(); 51     CreateDate(int leng) { 52         this.leng = leng; 53     } 54  55     public int[] create() { 56         int[] A = new int[leng]; 57         System.out.println("Please inter the max number(<10000):"); 58         Scanner scanner=new Scanner(System.in); 59         int maxNum = scanner.nextInt(); 60         if(maxNum>10000){ 61             System.out.println("enter error!"); 62             System.exit(0); 63         } 64         for (int i = 0; i < leng; i++) { 65             A[i] = randomInt.nextInt(maxNum); 66         } 67         return A; 68     } 69 } 70  71 // MERGE class for merger data 72 class MERGE { 73     int[] L = null; 74     int[] R = null; 75  76     // sort 77     public void sort(int[] A, int p, int q, int r) { 78         L = new int[q - p + 2]; 79         R = new int[r - q + 1]; 80         for (int i = 0; i < q - p + 1; i++) { 81             L[i] = A[p + i]; 82         } 83         L[q - p + 1] = 10000;// 10000 is max number 84         for (int j = 0; j < r - q; j++) { 85             R[j] = A[q + 1 + j]; 86         } 87         R[r - q] = 10000;// 10000 is max number 88         // test output A[p..r] 89         // for(int i=p;i<r+1;i++){ 90         // System.out.print(A[i]+" "); 91         // } 92         int j = 0; 93         int k = 0; 94         for (int i = 0; i < r - p + 1; i++) { 95             if (L[j] <= R[k]) { 96                 A[p + i] = L[j]; 97                 j++; 98             } else { 99                 A[p + i] = R[k];100                 k++;101             }102         }103     }104 }

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.