java中selectionsort的新approch

时间:2016-09-08 21:00:12

标签: java sorting

package com;

public class SimpleSelectionSort {

public static void main(String[] args) {
    int[] array={1,2,0,0,3,4,7,5,4,8,77,665,55,44,445,6};
    for(int i=0;i<array.length;i++){
        int min= i;
        if(i>0&&array[min]==array[min-1])
            continue;
        for(int j=i+1;j<array.length;j++){
            if(i>0&&array[j]==array[i-1]){
                min=j;
                break;
            }
            if(array[j]<array[min])min=j;
            }
         swap(array,i,min);  
    }
    show(array);
}
private static void swap(int[] array,int i,int min){
    int value=array[i];
    array[i]=array[min];
    array[min]=value;
}

private static void show(int[] a){
    for(int j=0;j<a.length;j++){
    System.out.println(a[j]);
    }
}

}

Plz查看代码,让我知道。这是一种更好的选择排序方式我省去了重复值排序的时间

1 个答案:

答案 0 :(得分:0)

复杂性仍为O(n ^ 2),因此不会改变。如果你想要更快的排序 - 我会考虑合并或快速排序O(n * log n)。或者一些O(n)种类取决于具体情况。

你的目标是什么?你说你的阵列中没有任何重复 - 你的排序会更快吗?您是否尝试通过大量重复来改进选择排序?你的阵列范围是多少?也许使用Bucket排序更明智?