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]); } }}
1 回答
不偏不易
TA贡献96条经验 获得超118个赞
你的代码有问题。
提问时有代码的,请用代码格式,编辑框左上角选择。
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; }
添加回答
举报
0/150
提交
取消