如何在Java中反转排序算法 公共类排序{ 公共静态void main(字符串[]args){ //用随机数填充数组 int[]未排序=新int[100]; 对于(int i=0;i

如何在Java中反转排序算法 公共类排序{ 公共静态void main(字符串[]args){ //用随机数填充数组 int[]未排序=新int[100]; 对于(int i=0;i,java,sorting,Java,Sorting,这是按降序排列的,但我想把它颠倒过来。 我试着改变if(unsorted[j]>hi){ 到aif(未排序的[j]

这是按降序排列的,但我想把它颠倒过来。 我试着改变
if(unsorted[j]>hi){
到a
if(未排序的[j]

[编辑:将大于更改为小于,两者相同]

好的,您希望数字按升序排列。因此,对于降序,您假设比较的数字为-1,所有其他数字必须大于-1,现在使用数字的最大值,而不是-1。在分配-1的位置分配
整数。最大值
。因此,更改代码如下:

public class Sort {

  public static void main(String[] args) {


    //fill the array with random numbers
    int[] unsorted = new int[100];
    for(int i = 0; i < 100; i++) {
      unsorted[i] = (int) (Math.random() * 100);
    }

    System.out.println("Here are the unsorted numbers:");
    for(int i = 0; i < 100; i++) {
      System.out.print(unsorted[i] + " ");
    }
    System.out.println();

    int[] sorted = new int[100];
    for(int i = 0; i < 100; i++) {
      int hi = -1;
      int hiIndex = -1;
      for(int j = 0; j < 100; j++) {
        if(unsorted[j] > hi) {
          hi = unsorted[j];
          hiIndex = j;
        }
      }
      sorted[i] = hi;
      unsorted[hiIndex] = -1;
    }
    System.out.println("Here are the sorted numbers: ");
    for(int i = 0; i < 100; i++) {
      System.out.print(sorted[i] + " ");
    }
    System.out.println();
  }
}
int[]排序=新的int[100];
对于(int i=0;i<100;i++){
int hi=整数最大值;
int-hiIndex=i;
对于(int j=0;j<100;j++){
if(未排序的[j]
您到底想更改什么?我试图将行:if(unsorted[j]>hi)更改为if(unsorted[j]hi=-1,因此在升序情况下,您需要将
hi
初始化为最大可能值,以便数组中的任何数字都不会大于该值。如果rray包含最大整数值,则此算法可能不起作用。如果将
int-hiIndex=-1;
更改为
int-hiIndex=i;
则该算法适用于该值为最大值的情况。@CC31。谢谢。
 int[] sorted = new int[100];
    for(int i = 0; i < 100; i++) {
      int hi = Integer.MAX_VALUE;   
      int hiIndex = i;
      for(int j = 0; j < 100; j++) {
        if(unsorted[j] < hi) {
          hi = unsorted[j];
          hiIndex = j;
        }
      }
      sorted[i] = hi;
      unsorted[hiIndex] = Integer.MAX_VALUE;