有没有大神能解释下这是为什么

package com.chen;

public class Demo{

public static void main(String[] args){

int arr[]={1,6,9,-15,16,-6};

Select s=new Select();

s.sort(arr);

}

}

class Select{

int temp=0;

public void sort(int arr[]){

for(int j=0;j<arr.length-1;j++){

int min=arr[j];

int minIndex=j;

for(int k=j+1;k<arr.length;k++){

                              //在选择排序法中,下面的arr[j]为什么不行,而arr[minIndex]或者min可以?

if(arr[j]>arr[k]){

min=arr[k];

minIndex=k;

}

}

temp=arr[j];

arr[j]=arr[minIndex];

arr[minIndex]=temp;

}

for(int i=0;i<arr.length;i++){

System.out.println(arr[i]);

}

}

}


qq_82年的彬锅锅_03446807
浏览 1148回答 1
1回答

不偏不易

你的代码有问题。提问时有代码的,请用代码格式,编辑框左上角选择。if条件有问题,原来是arr[j]>arr[k],代表0和1比,取小的,当2和3比时3小,所以取-15,但是后面4和5比,-6小,所以又取了-6,本来应该是取最小值和下标,由于条件有问题,导致出错。应该改为if (min > arr[k]) {},循环时有值比min小的,就更新min和下标minIndex代码如下。 public void sort(int arr[]) { for (int j = 0; j < arr.length - 1; j++) { int min = arr[j]; int minIndex = j; for (int k = j + 1; k < arr.length; k++) { // 在选择排序法中,下面的arr[j]为什么不行,而arr[minIndex]或者min可以? if (min > arr[k]) { min = arr[k]; minIndex = k; } } temp = arr[j]; arr[j] = arr[minIndex]; arr[minIndex] = temp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java