Java Selection Sort Exchange无法正常工作

时间:2015-10-19 02:15:50

标签: java sorting selection

我的任务:创建一个可以使用字符串和整数的选择排序。

您好,我想知道是否有人可以告诉我为什么我的列表不会排序,无论我输入什么列表,只是以相同的顺序吐出来。我是StackOverflow和JavaProgramming的新手。对于我目前正在制作的任何新手错误,我感到很抱歉。

[]

4 个答案:

答案 0 :(得分:0)

您没有比较数组中字符串的值:

            if (inner < minimumIndex) {
                minimumIndex = inner;
            }

也许你需要这个(如果你想按字符串的int值对字符串进行排序):

            if (Integer.parseInt(array[inner]) < Integer.parseInt(array[minimumIndex])) {
                minimumIndex = inner;
            }

经过测试的代码:

public static void sort(String[] array) {
    int outer = 0;
    while (outer < array.length - 1) {
        int minimumIndex = outer;
        int inner = outer + 1;
        while (inner < array.length) {
            if (Integer.parseInt(array[inner]) < Integer.parseInt(array[minimumIndex])) {
                minimumIndex = inner;
            }
            inner++;
        }
        //exchange
        String temp = array[minimumIndex];
        array[minimumIndex] = array[outer];
        array[outer] = temp;
        outer++;
    }
}

如果要按字符串排序:

            if (array[inner].compareTo(array[minimumIndex]) < 0) {
                minimumIndex = inner;
            }

答案 1 :(得分:0)

Java Array有一个名为sort()的内置操作。哪个会为你排序。

Arrays.sort(array);

所以你的代码可以改写为,

//import Arrays module
import java.util.Arrays;

public class selectionSort {
    public static void main(String[] args) {
        sort(args);
        printArray(args);
    }

    public static void sort(String[] array) {
        //sort your array
        Arrays.sort(array);
    }
    public static void printArray(String[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

有关数组的更多信息,请查看http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

答案 2 :(得分:0)

好吧,如果您想自己进行排序,可以使用整数数组

来完成
public class sorting {

    public static void main(String arg[])throws Exception{

        for(int s = 0; s <= arg.length - 1; s++){

            for(int k = 0; k <= arg.length - 2; k++){

                if(j[k] > j[k+1]){ //comparing array values

                    int temp = 0;
                    temp = j[k]; //storing value of array in temp variable 
                    j[k] = j[k+1]; //swaping values
                    j[k+1] = temp; //now storing temp value in array
                }    //end if block             
            }  // end inner loop    
        }
        //end outer loop
        for(int s = 0; s <= j.length - 1; s++){
            System.out.println(j[s]); //retrieving values of array in ascending order 
        }   
    }
}

答案 3 :(得分:0)

我希望这会有所帮助

open(blabla, 'w', encoding='utf-8')

请注意,实际上并没有将数组中的元素与索引进行比较。如果你将代码提取到方法中,我认为你会发现事情要简单得多。