选择排序和插入排序差不多,交换的次数减少。平均/最好/最坏时间复杂度是O(n2),是不稳定的排序算法。(插入排序是稳定排序算法) update:以前写错了一个地方,应该每次要把最小值找出来,记下来,每次和最小值去比较,目的就是为了从后面找到最小的值。
public class Test {
/*
* 选择排序:选择最小/大的放在前面,每一趟前几个按序排列
*/
static int[] selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int k = i;
int min = arr[i];
// 和i后面的每一个比较,如果有比i小的记下下标k
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < min) {
k = j;
min = arr[j];
}
}
if (k != i) {// 交换
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
return arr;
}
public static void main(String[] args) {
int arr[] = new int[] { 1, 5, 7, 2, 6, 0 };
int newarr[] = selectSort(arr);
System.out.println("----------------------");
for (int i : newarr) {
System.out.println(i);
}
}
}