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
切换两个数组项的代码是错误的。请再仔细看看。