编写一个 Java 程序,在不使用内置函数(临时变量)的情况下对数组进行降序排序,并提供一个使用 Sort 方法的示例。
Java 数组降序排序程序
在此程序中,我们使用 Collections.reverseOrder() 和 Array.sort 方法对数组元素进行降序排序。
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
import java.util.Comparator;
public class Example1 {
private static Scanner sc;
public static void main(String[] args)
{
int Size, i;
sc = new Scanner(System.in);
System.out.print(" Please Enter Number of elements : ");
Size = sc.nextInt();
Object [] a = new Object[Size];
System.out.print(" Please Enter " + Size + " elements : ");
for (i = 0; i < Size; i++)
{
a[i] = sc.nextInt();
}
Comparator<Object> cms = Collections.reverseOrder();
Arrays.sort(a, cms);
System.out.println("\n Result : ");
for (Object Number: a)
{
System.out.print(Number + " ");
}
}
}

请参阅 sort 文章。
使用临时变量对数组进行降序排序的 Java 程序
此 Java 程序 允许用户输入大小和 数组 元素。接下来,它将使用 For Loop 将数组元素按降序排序。
import java.util.Scanner;
public class SortDescending2 {
private static Scanner sc;
public static void main(String[] args)
{
int Size, i, j, Temp;
sc = new Scanner(System.in);
System.out.print(" Please Enter Number of elements in an array : ");
Size = sc.nextInt();
int [] a = new int[Size];
System.out.print(" Please Enter " + Size + " elements of an Array : ");
for (i = 0; i < Size; i++)
{
a[i] = sc.nextInt();
}
for (i = 0; i < Size; i++)
{
for (j = i + 1; j < Size; j++)
{
if(a[i] < a[j])
{
Temp = a[i];
a[i] = a[j];
a[j] = Temp;
}
}
}
System.out.print("\n Result of a Descending Array : ");
for (i = 0; i < Size; i++)
{
System.out.print(a[i] + " ");
}
}
}

用户在此 Java 程序中插入的值为 a[5] = {24, 19, 65, 5, 99}
第一个 For Loop – 第一次迭代:for (i = 0; 0 < 5; 0++)
i 的值为 0,条件 (i < 5) 为 True。因此,它将进入内部或嵌套的 For Loop。
第二个 For Loop – 第一次迭代:for (j = 0 + 1; 1 < 5; 1++)。条件 (1 < 5) 为 True。因此,它将进入 If Statement。
if(a[i] < a[j]) => if(24 < 19) – 条件为 False
第二个 For Loop – 第二次迭代:for (j = 2; 2 < 5; 2++)。这里,条件 (i < 5) 为 True。
if(a[i] < a[j]) => if(24 < 65) – 条件为 True
Temp = a[0] = 24
a[0] = a[2] = 65
a[j] = Temp => a[2] = 24
对剩余的迭代执行相同的操作,直到条件 (i < 5) 失败。
下一个 for 循环用于打印元素。我建议您参考 Java 打印数组元素程序 文章来理解这一点。
使用函数对数组进行降序排序的 Java 程序
此 程序 与上述程序相同。但是,这次我们使用 Method 将对数组元素进行降序排序的逻辑分开。并且我们使用了另一个函数来打印其中的项。
import java.util.Scanner;
public class Example3 {
private static Scanner sc;
public static void main(String[] args)
{
int Size, i;
sc = new Scanner(System.in);
System.out.print(" Please Enter Number of elements : ");
Size = sc.nextInt();
int [] a = new int[Size];
System.out.print(" Please Enter " + Size + " elements : ");
for (i = 0; i < Size; i++)
{
a[i] = sc.nextInt();
}
OrderDesc(a, Size);
System.out.print("\n Result : ");
printAttay(a, Size);
}
public static void OrderDesc(int[] a, int Size)
{
int i, j, Temp;
for (i = 0; i < Size; i++)
{
for (j = i + 1; j < Size; j++)
{
if(a[i] < a[j])
{
Temp = a[i];
a[i] = a[j];
a[j] = Temp;
}
}
}
}
public static void printAttay(int[] A, int Size)
{
int i;
for (i = 0; i < Size; i++)
{
System.out.print(A[i] + " ");
}
}
}
Please Enter Number of elements : 8
Please Enter 8 elements : 25 95 86 15 88 77 5 126
Result : 126 95 88 86 77 25 15 5