之前写了关于直接插入排序的算法,注意区分。
//直接选择排序
public void selectSort(int a[], int n) {
int i, j, min;
for (i = 0; i < n; i++) {
min = i;
for (j = i + 1; j < n; j++) {
if (a[j] < a[min]) min = j;
}
int temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
直接插入排序是在0~i-1中找一个数比a[i]小,将a[i]插入至那个数后面;
直接选择排序是在无序数组a[i]~a[n-1]中找出最小的数,并与a[i]交换,初始全数组为无序数组a[0]~a[n-1]。
时间复杂度:最好最坏平均情况下均为O(n^2);
空间复杂度:O(1);
该算法不稳定,在n较小时较好。