需要帮助理解这种特定的整数降序选择排序

Need help in understanding this specific descending order selectiion sort of integers

如标题所述,这是使用选择的整数降序 sort.This 是程序。我很难理解这些步骤。有人可以帮助我理解它吗?提前致谢!!

import java.util.Scanner;
public class Selectionsort_descending
{
public static void main(String args[])
{
int i,j,k,m,n;
Scanner sc = new Scanner(System.in);
System.out.println("Enter any number");
n=sc.nextInt();
int a[]=new int [n];

for (i=0;i<=n-1;i++)
{
System.out.println("Enter number");
a[i]=sc.nextInt();
    }
for (j=0;j<=n-1;j++)
{
for (k=j;k<=n-1;k++)
{
if (a[j]<a[k])
{
m=a[j];
a[j]=a[k];
a[k]=m;
    }
}
    }
for (i=0;i<=n-1;i++)
{
System.out.print(a[i]+" ");
    }    
    }
}

首先,我强烈建议让您的代码更加格式化。在 Eclipse 中,它是通过按 [Ctrl]+[Shift]+[F].

来完成的

通过这样做,您的代码应该看起来像那样(我做了一些改进,然后我会解释)。

import java.util.Scanner;

public class Selectionsort_descending {
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter any number");
    int n = sc.nextInt();
    int a[] = new int[n];

    for (int i = 0; i < n ; i++) {
        System.out.println("Enter number");
        a[i] = sc.nextInt();
    }
    
    for (int j = 0; j < n ; j++) {
        for (int k = j; k < n; k++) {
            if (a[j] < a[k]) {
                int m = a[j];
                a[j] = a[k];
                a[k] = m;
            }
        }
    }
    
    for (int i = 0; i < n ; i++) {
        System.out.print(a[i] + " ");
    }
    
    sc.close();
}
}

首先,我将“i <= n-1”更改为“i < n”,因为我认为这样可读性更高。

其次,我在实际使用变量时声明了所有变量,而不是像您那样一开始就声明。

在第一个 for 循环中,您通过控制台输入您的号码。

然后检查数组的每个数字:(j for Loop)

  • 遍历此数字之后的所有数字(k for Loop)

  • 当前数字 (a[j]) 是否小于位于数组后面的数字 (a[k])? → 换位置

    如果您想了解更多信息,该算法也称为“选择排序”。 希望能帮到你!

由于交换是在内循环中完成的,所以它是冒泡排序或类似的东西。如果交换在内循环之外完成,则它是选择排序或类似的东西。维基链接:

http://en.wikipedia.org/wiki/Bubble_sort

http://en.wikipedia.org/wiki/Selection_sort