选择排序的时间复杂度是:0(n^2) 二次阶
选择排序:
1.选择当前的数是最小数 int minIndex = i;
2.把当前的数去数组中进行比较,如果有比他小的进进行替换,一直结束,最后找到最小值和最大值进行替换
public class SelectSort {
public static void main(String[] args) {
// int[] arr = {10, 1, 5, 9, 20, 16};
// selectSort(arr);
// System.out.println(Arrays.toString(arr));
//测试花费的时间
int array[] = new int[200000];
for (int i = 0; i < 200000; i++) {
array[i] = (int) (Math.random() * 800000);
}
//开始时间
long time = new Date(System.currentTimeMillis()).getTime();
selectSort(array);
//结束时间
long time2 = new Date(System.currentTimeMillis()).getTime();
System.out.println(((time2 - time) / 1000) + "秒");
}
public static void selectSort(int[] arr) {
//代码实现
for (int i = 0; i < arr.length; i++) {
//循环当前的最小值的下标
int minIndex = i;
//当前次循环的最小值
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {
//如果下一个值比最小值大
if (min > arr[j]) {
//把最小值得到下标拿到
minIndex = j;
min = arr[j];
}
}
//判断是否进行交换
if (minIndex != i) {
//最小值的和最大值的进行交换
arr[minIndex] = arr[i];
arr[i] = min;//得到的最小值等于当下循环的下标
}
}
}
}