原理: 选择排序和直接插入排序有些类似。都是有一个有序序列和无序序列。
区别在于: 选择排序是将无序区的最小值放到有序区的最后,插入排序则是将无序区的第一个值插入到有序区间当中。
1、假设整个数组的大小为n,从a[0 ~ i - 1]为有序区间,a[i ~ n-1 ]为无序区间
2、比较a[i ~ n-1]的所有元素,找出最小的元素,将其与a[i]交换,这样在a[0 ~ i]之间就形成了有序区间。
3、i++,重复第二步,直到 i = n - 1
代码:
int
i,j;
int m = n;
for (i = 0 ; i < n - 1 ; i ++) {
m = i;
for (j = i + 1 ; j < n ; j ++) {
if (a[m] > a[j]) {
m = j;
}
}
if (m != i ) {
int temp = a[m];
a[m] = a[i];
a[i] = temp;
}
int m = n;
for (i = 0 ; i < n - 1 ; i ++) {
m = i;
for (j = i + 1 ; j < n ; j ++) {
if (a[m] > a[j]) {
m = j;
}
}
if (m != i ) {
int temp = a[m];
a[m] = a[i];
a[i] = temp;
}
}