选择排序
选择思想介绍
0 ~ n - 1 中找到一个最小值(最大值) 的位置,与 0 位置值交换
1 ~ n - 1 中找到一个最小值(最大值) 的位置,与 1 位置值交换
2 ~ n - 1 中找到一个最小值(最大值) 的位置,与 2 位置值交换
…… …… ……
n - 2 ~ n - 1 中2找到一个最小值(最大值) 的位置,与 n - 2位置值交换
n 位置 与 n相等
时间负责度计算
0 ~ n - 1 遍历长度 N
1 ~ n - 1 遍历长度 N -1
…… ……
n - 2 ~ n - 1 遍历长度 1
等差数列求和 n * (n + 1) / 2
O(n^2/2 + n/2 ) => O(n^2)
分析图
代码
public static void selectSort(int arr[]){
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[minIndex] > arr[j]){
minIndex = j;
}
}
MeterUtil.swap(arr,minIndex,i);
}
}