选择排序
思想:每次找数组中最小的数字,与最前面的数字交换,与冒泡排序的区别就是,冒泡是两两比较交换,而选择排序确定一个数只需要交换一次
代码实现
package com.sort;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
public class SelectSort {
//选择排序,每次从数组中找到最小值,进行一次换位置
public static void main(String[] args) {
int[] array=new int[80000];
for (int i = 0; i <array.length ; i++) {
array[i]=(int)(Math.random()*800000);
}
sort(array);
System.out.println(Arrays.toString(array));
}
public static void sort(int[] array){
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yy-MM-dd hh:mm:ss");
Date date=new Date();
System.out.println(simpleDateFormat.format(date));
int count=0;//记录换了几次位置
//循环找length-1个最小值进行换位置就可,最后一个位置即是最大
for (int i = 0; i <array.length-1 ; i++) {
int mixIndex=i;//记录数值最小的下标
int mix=array[mixIndex];//记录该下标的值
for (int j = i+1; j <array.length ; j++) {//从i+1 位置开始往后面找 最小的数字
if (array[j]<mix){
mixIndex=j;
mix=array[j];
}
}
if (mixIndex!=i){//如果最小的不是本身的话换位置
array[mixIndex]=array[i];
array[i]=mix;
count++;
}
}
Date date1=new Date();
System.out.println(simpleDateFormat.format(date1));
System.out.println(count);
}
}