需要帮助理解这种特定的整数降序选择排序
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])? → 换位置
如果您想了解更多信息,该算法也称为“选择排序”。
希望能帮到你!
由于交换是在内循环中完成的,所以它是冒泡排序或类似的东西。如果交换在内循环之外完成,则它是选择排序或类似的东西。维基链接:
如标题所述,这是使用选择的整数降序 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])? → 换位置
如果您想了解更多信息,该算法也称为“选择排序”。 希望能帮到你!
由于交换是在内循环中完成的,所以它是冒泡排序或类似的东西。如果交换在内循环之外完成,则它是选择排序或类似的东西。维基链接: