选择排序不起作用 - 缺少逻辑

时间:2017-03-11 19:16:53

标签: java arrays sorting selection

使用选择排序对数组进行排序。我认为我的逻辑是正确的,但这是一个愚蠢的错误。

    public static void arraySort(int[] a) {
    //for loop to go through array
    for(int i = 0; i < a.length; i++) {
        int temp = a[i]; //set a temp value for first value
        for (int x = i + 1; x < a.length; x++) {
            if (a[x] < temp) {
                a[i] = a[x];
                temp = a[x];
            }
        }
    }
}

最后,它不断重复打印一组值。

1 个答案:

答案 0 :(得分:0)

您应该跟踪外循环中的最小索引,并在每个内循环完成后交换两个元素,例如:

for (i = 0; i < size - 1; i++) {
  minIndex = i;
  for (j = i; j < size; j++) {
    if (array[j] < array[minIndex]) {
      minIndex = j;
    }
  }
  swap(array, i, minIndex);
}

您的固定代码:

public static void arraySort(int[] a) {
    //for loop to go through array
    for(int i = 0; i < a.length; i++) {
        int temp = a[i]; //set a temp value for first value
        int minIndex = i;
        for (int x = i + 1; x < a.length; x++) {
            if (a[x] < temp) {
                a[i] = a[x];
                temp = a[x];
                minIndex = x;
            }
        }
        //swap
        a[minIndex] = a[i];
        a[i] = temp;
    }
}