2014-10-30 51 views
0

您好,我正在製作一個隨機生成的數字列表,並需要對它們進行排序。目前我已經將數字生成到數組中並輸出它們。我需要能夠按升序對數字進行排序。我的問題是如何調用隨機生成的數組進行排序。所以我可以標記排序列表需要多少時間。對隨機生成的數組進行排序

import java.util.*; 
public class project2 { 
    public static int[] mklist(int len, int max, int min){ 
     Random r = new Random(); 
     int spread = max - min; 
     int[] numbers = new int[len]; 
     for(int i = 0; i < len; i++) 
      numbers[i] = (r.nextInt() % (spread/2) + (spread/2)) + min; 
     return numbers; 
    } 
    static void printarray(int[] A) { 
     int i = 0; 
     while (i < A.length) { 
      System.out.print(A[i] + " "); 
      i++; 
     } 
     System.out.println(""); 
    } 

    public static void main(String [] args) { 
     int[] tl; 

     long StartTime = System.nanoTime(); 
     tl = mklist(10, 10000, 100); 
     long EndTime = System.nanoTime(); 
     System.out.println("Time to create list: " + (EndTime - StartTime)/1000000.0 + " milliseconds"); 
     printarray(tl); 
    } 
} 

這裏是一個可行的分選機:

public static int[] ascending(int[] a){ 

    int temp; 

    for(int i = 0; i < a.length - 1; i++){ 
     for(int j = 0; j < a.length - 1; j++){ 
      if(a[j] > a[j+1]){ 
       temp = a[j]; 
       a[j] = a[j+1]; 
       a[j+1] = temp; 
      } 
     } 
    } 

    return(a); 
} 
+0

'ascending(tl);'?然後再次執行'printarray(tl);'。您已經完成了計時器代碼,因此只需在這兩個方法調用周圍進行編寫 – 2014-10-30 19:59:05

+5

您編寫了所有代碼,並且您不知道如何調用您的方法?有東西聞起來很腥...... – 2014-10-30 19:59:41

回答

0

只是修改當前的主要方法。

public static void main(String [] args) { 
    int[] tl; 

    long StartTime = System.nanoTime(); 
    tl = mklist(10, 10000, 100); 
    long EndTime = System.nanoTime(); 
    System.out.println("Time to create list: " + (EndTime - StartTime)/1000000.0 + " milliseconds"); 
    printarray(tl); 
    StartTime = System.nanoTime(); 
    Arrays.sort(tl); 
    EndTime = System.nanoTime(); 
    System.out.println("Time to sort list: " + (EndTime - StartTime)/1000000.0 + " milliseconds"); 
    printarray(tl); 
}