2017-04-12 78 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)); 
    } 
}