思想:
分已排序区间和未排序区间。每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。
int* selectSort(int a[], int n) {
if (n <= 1) {
return a;
}
int i, j, index;
for (i = 0; i < n - 1; i++) {
index = i;
for (j = i + 1; j < n; j++) {
if (a[index] > a[j]) { // 在未排序的部分寻找最小的值的索引
index = j;
}
}
if (index != i) { // 是否需要交换数据的位置
int temp = a[i];
a[i] = a[index]; // 将最小值插入已排序的末尾
a[index] = temp;
}
}
return a;
}
使用
int a[5] = {3, 1, 5, 4, 2};
int number = sizeof(a) / sizeof(int);
int *b = selectSort(a, number);
for (int i = 0; i < number; i++) {
NSLog(@"%d", b[i]);
}
网友评论