因此,该程序的目的是有选择地从最大到最小的整数随机数组。为此,我需要继续交换具有最大元素的第一个元素。我认为我的方法是正确的,但我对Java很新,不知道在main中调用什么才能正确执行我的方法。提前谢谢!
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 :(得分:2)
要对数组进行排序,只需调用以下命令:
sort(array);
然后,您可以再次打印数组以验证它是否按以下顺序排序:
printArray(array);
答案 1 :(得分:2)
您也可以在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);
}
...
答案 2 :(得分:2)
这是我在Code Review上发布的代码。这是一个String数组,但你可以改为整数。 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));
}
}
答案 3 :(得分:1)
您使用的方法中必须包含参数, 你应该将数组放在()
中答案 4 :(得分:1)
你可以使用Arrays的内置功能。只需调用内置方法并传递数组即可。
Arrays.sort(在这里传递你的数组)。
如果您想要使用内置方法,请参阅此链接。