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查看代码,让我知道。这是一种更好的选择排序方式我省去了重复值排序的时间
答案 0 :(得分:0)
复杂性仍为O(n ^ 2),因此不会改变。如果你想要更快的排序 - 我会考虑合并或快速排序O(n * log n)。或者一些O(n)种类取决于具体情况。
你的目标是什么?你说你的阵列中没有任何重复 - 你的排序会更快吗?您是否尝试通过大量重复来改进选择排序?你的阵列范围是多少?也许使用Bucket排序更明智?