【问题标题】:Java program sort random arrayJava程序排序随机数组
【发布时间】:2017-04-12 01:11:08
【问题描述】:

所以这个程序的目的是有选择地从大到小对一个随机整数数组进行排序。为此,我需要不断用最大的元素交换第一个元素。我认为我的方法是正确的,但我对 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();     
}

}

【问题讨论】:

  • Arrays.sort(array);

标签: java arrays sorting


【解决方案1】:

要对数组进行排序,只需调用以下代码:

sort(array);

然后,您可以再次打印该数组以验证它是否已排序:

printArray(array);

【讨论】:

    【解决方案2】:

    您也可以在printArray() 方法中调用sort() 方法,因此当您调用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);
    }
    ...
    

    【讨论】:

      【解决方案3】:

      这是我在 Code Review 上发布的代码。这对一个字符串数组进行排序,但你可以用整数代替。 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));
          }
      }
      

      【讨论】:

        【解决方案4】:

        你使用的方法中必须有参数, 你应该把数组放在 ( )

        【讨论】:

          【解决方案5】:

          您可以使用数组的内置功能。只需调用内置方法并传递您的数组。

          Arrays.sort(在此处传递您的数组)。

          如果您想使用内置方法,请参考此链接。

          Java : Sort integer array without using Arrays.sort()

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-04
            • 1970-01-01
            • 1970-01-01
            • 2011-12-21
            • 1970-01-01
            • 1970-01-01
            • 2014-03-21
            • 2012-11-19
            相关资源
            最近更新 更多