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

时间:2015-09-11 11:13:41

标签: java sorting integer selection-sort

如标题中所述,这是使用选择排序的降序整数。这是程序..我在理解步骤时遇到困难。有人能帮我理解吗?在此先感谢!!

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]+" ");
    }    
    }
}

2 个答案:

答案 0 :(得分:0)

首先,我强烈建议让您的代码更加格式化。在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&lt; = n-1”更改为“i&lt; n”,因为我认为它更具可读性。

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

在第一个for-loop中,您可以通过控制台输入您的号码。

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

  • 查看此号码后面的所有数字(k for Loop)
  • 是当前数字(a [j])是否小于稍后在数组中的数字(a [k])? →更改职位

    如果您想了解更多关于它的更多信息,这个algorythm也被称为“选择排序”。 我希望我能帮到你!

答案 1 :(得分:0)

由于交换是在内部循环中完成的,因此它是冒泡排序或类似的东西。如果交换是在内部循环之外完成的,那么它是一种选择排序或类似的东西。维基链接:

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

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