如标题中所述,这是使用选择排序的降序整数。这是程序..我在理解步骤时遇到困难。有人能帮我理解吗?在此先感谢!!
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]+" ");
}
}
}
答案 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)
是当前数字(a [j])是否小于稍后在数组中的数字(a [k])? →更改职位
如果您想了解更多关于它的更多信息,这个algorythm也被称为“选择排序”。 我希望我能帮到你!
答案 1 :(得分:0)
由于交换是在内部循环中完成的,因此它是冒泡排序或类似的东西。如果交换是在内部循环之外完成的,那么它是一种选择排序或类似的东西。维基链接: