public class Select {
public static void main(String[] args) {
new Thread(()->{
int[] arr=new Select().random();
Selectsort(arr);
System.out.println(Thread.currentThread().getName()+Arrays.toString(arr));
},"a1").start();
new Thread(()->{
int[] arr=new Select().random();
Selectsort(arr);
System.out.println(Thread.currentThread().getName()+Arrays.toString(arr));
},"a2").start();
}
static void Selectsort(int[] array){
//从后往前
for (int end=array.length-1;end>0;end--){
//先初始化一个最大值的下标
int maxindex=0;
//循环遍历数组
for (int begin=0;begin<=end;begin++){
//如果小的话就把下标替换
if(array[maxindex]<=array[begin]){
maxindex=begin;
}
}
//然后把最大的与最后位换个地方继续下个循环
int temp=array[maxindex];
array[maxindex]=array[end];
array[end]=temp;
}
}
int[] random(){
ArrayList<Integer> list = new ArrayList<>();
Random random = new Random();
for (int i=0;i<100;i++){
list.add(random.nextInt(100));
}
System.out.println(list);
int[] arr=list.stream().mapToInt(Integer::valueOf).toArray();
return arr;
}
}
将这些待排序的数组中的最大值调出来排到最后
选择排序和冒泡排序是时间复杂度都是O(n²) (因为都是双层for循环),但是选择排序比冒泡排序更优(可以通过测试排序大量数据测试)。