Java:选择排序逻辑
我正在使用选择排序打印已排序的数组元素。但我将输入数组元素按相同的顺序作为输出,而不进行排序Java:选择排序逻辑,java,selection-sort,Java,Selection Sort,我正在使用选择排序打印已排序的数组元素。但我将输入数组元素按相同的顺序作为输出,而不进行排序 public class SelectionSort { public static void main(String[] args) { int[] arr= {1,9,3,0,7}; int n=arr.length; for(int i=0; i<n-1; i++) { int mini
public class SelectionSort {
public static void main(String[] args) {
int[] arr= {1,9,3,0,7};
int n=arr.length;
for(int i=0; i<n-1; i++)
{
int minimumIndex = i;
for(int j=i; j<n; j++)
{
if(arr[j]<arr[minimumIndex])
{
minimumIndex=j;
}
}
int temp=arr[i];
arr[i]=arr[minimumIndex];
arr[i]=temp;
}
for(int e: arr)
{
System.out.print(e+" ");
}
}
}
公共类选择排序{
公共静态void main(字符串[]args){
int[]arr={1,9,3,0,7};
int n=阵列长度;
对于方法代码中的(inti=0;i,实际问题是交换元素
顺序需要如下所示:
int temp=arr[minimumIndex];
arr[minimumIndex]=arr[i];
arr[i] =temp;
而不是
int temp=arr[i];
arr[i]=arr[minimumIndex];
arr[i]=temp;
我看到了两个问题。一个是交换项目的方式。你需要替换找到最小索引的项目。另外,你的J索引应该在I索引之后开始。你可以假设它之前的一个在你循环时是最小的。我已经更改了几段代码,并对其进行了测试,它在f请给我拿一本书
for (int i = 0; i < arr.length - 1; i++)
{
int minimumIndex = i;
for (int j = i + 1; j < arr.length; j++)
{
if (arr[j] < arr[minimumIndex])
{
minimumIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[minimumIndex];
arr[minimumIndex] = temp;
}
for(int i=0;i
切换两个数组项的代码是错误的。请再仔细看看。