2017-04-12 75 views
2

所以這個程序的目的是有選擇地排序從最大到最小的整數隨機數組。要做到這一點,我需要繼續交換具有最大元素的第一個元素。我認爲我的方法是正確的,但我對Java相當陌生,不確定要在main中調用什麼才能正確執行我的方法。先謝謝你!Java程序的排序隨機數組

package sortarray; 

public class SortArray { 

public static int randomInt(int low, int high) { 
double e; 
double x=Math.random(); 
e=low+x*(high-low); 
return (int)e; 
} 
public static int[] randomIntArray(int n) { 
int[] a = new int[n]; 
for(int i = 0; i < a.length; i++) { 
    a[i] = randomInt(-5, 15); 
} 
return a; 
} 

public static int indexOfMaxInRange(int[] a, int low, int high) { 
int index = low; 
for (int i = low + 1; i < a.length; i++) { 
    if (a[i] > a[index]) { 
     index = i; 
    } 
} 
return index; 
} 

public static void swapElement(int[] a, int index1, int index2) { 
    int temp = a[index1]; 
    a[index1] = a[index2]; 
    a[index2] = temp; 
} 

public static void sort(int[] a) { 
    int length = a.length; 
    //use length-1 because do not need to swap last element with itself 
    for (int i = 0; i < length-1; i++) { 
     int indexOfMax = indexOfMaxInRange(a, i, length-1); 
     swapElement(a, i, indexOfMax); 
    } 
} 

public static void printArray(int[] a) { 
for(int i = 0; i < a.length; i++) { 
    System.out.print(" " + a[i]); 
} 
} 


public static void main(String[] args) { 
int[] array = randomIntArray(30); 
    printArray();  
} 

} 
+0

'Arrays.sort(array);' – user2173372

回答

2

要排序的數組,你只需要調用以下:

sort(array); 

然後,您可以再次打印陣列,以驗證它與分類:

printArray(array); 
1

您也可以撥打方法sort()內的printArray()方法,因此當您撥打printArray()時,它將打印排序:

... 
public static void printArray(int[] a) { 
    sort(a); 
    for (int i = 0; i < a.length; i++) { 
     System.out.print(" " + a[i]); 
    } 
} 


public static void main(String[] args) { 
    int[] array = randomIntArray(30); 
    printArray(array); 
} 
... 
0

有必須在你使用的方法,參數 你應該把數組中的()

1

這裏是我的代碼,我貼在代碼審查。這種類型的字符串的數組,但你可以把整數代替。 https://codereview.stackexchange.com/questions/160243/sort-a-given-string-in-ascending-order

鑑於串

[H,B,d,G,F,E,A,C]

輸出

[A,B,C ,D,E,F,G,H]

public class sortArray { 
    public static void sort (String[] str) 
    { 
     int lastPos = str.length - 1; 
     int minPos = 0; 
     String s = ""; 
     for (int i = 0; i < lastPos; i++) 
     { 
      minPos = i; 
      for (int j = i + 1; j <= lastPos; j++) 
       if (str[j].compareTo (str[minPos]) < 0) 
        minPos = j; 
      if (minPos != i) 
      { 
       s = str[i]; 
       str[i] = str[minPos]; 
       str[minPos] = s; 
      } 
     } 
    } 

    public static void main(String[] args){ 
     String[] str = {"H", "B", "D", "G","F", "E", "A", "C"}; 
     sort(str); 
     System.out.println(Arrays.toString(str)); 
    } 
}