在Java中将数组从最小到最大排序

时间:2016-01-08 02:46:58

标签: java arrays sorting

我正在尝试根据example 104.5对数组进行排序。它要求您对从最小到最大的数组进行排序。我已经多次彻底浏览了我的程序,但我无法发现我的错误。这是我的排序类的代码:

import java.util.Arrays;
public class Sorting {
    public static int smallest(int[] array) {
        int min = array[0];
        for(int i = 0; i < array.length; i++){
            if(array[i] < array[0]) {
                min = array[i];
            }
        }
        return min;
    }

    public static int indexOfTheSmallest(int[] array) {
        int ind = array[0];
        for(int i = 0; i < array.length; i++){
            if(array[i] < array[0]) {
                ind = i;
            }
        }
        return ind;
    }

    public static int indexOfTheSmallestStartingFrom(int[] array, int index) {
        int ind = index;
        for(int i = index; i < array.length; i++){
            if(array[i] < array[index]) {
                ind = i;
            }
        }
        return ind;
    }

    public static void swap(int[] array, int index1, int index2) {
        int stor = array[index1];
        array[index1] = array[index2];
        array[index2] = stor;
    }

    public static void sort(int[] array) {
        int indSmall;
        System.out.println(Arrays.toString(array));
        for(int i = 0; i < array.length; i++) {
            indSmall = indexOfTheSmallestStartingFrom(array, i);
            swap(array, indSmall, i);
            System.out.println(Arrays.toString(array));
        }
    }
}

这是我正在运行的代码:

int[] values = {8, 3, 7, 9, 1, 2, 4};
        Sorting.sort(values);

应输出:

[8, 3, 7, 9, 1, 2, 4]
[1, 3, 7, 9, 8, 2, 4]
[1, 2, 7, 9, 8, 3, 4]
[1, 2, 3, 9, 8, 7, 4]
[1, 2, 3, 4, 8, 7, 9]
[1, 2, 3, 4, 7, 8, 9]
[1, 2, 3, 4, 7, 8, 9]

但它正在输出:

[8, 3, 7, 9, 1, 2, 4]
[4, 3, 7, 9, 1, 2, 8]
[4, 2, 7, 9, 1, 3, 8]
[4, 2, 3, 9, 1, 7, 8]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]
[4, 2, 3, 8, 1, 7, 9]

另外,这是我的第一篇文章,对不起,如果我做错了。

1 个答案:

答案 0 :(得分:1)

if(array[i] < array[0]) {

应该是

if(array[i] < min) {

您可以使用Math.min(int, int)之类的

min = Math.min(array[i], min);

根本没有if

,在indexOfTheSmallestStartingFrom

if(array[i] < array[index]) {

应该是

if(array[i] < array[ind]) {