选择排序的原理:
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
时间复杂度:O(n^2)
代码实现如下:
#include <stdio.h>
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void selectSort(int arr[], int n)
{
int i, j;
for (i = 0;i < n; i++) {
int minIndex = i;
for (j = i; j < n; j++) {
if (arr[j] < arr[minIndex])
minIndex = j;
}
swap(&arr[i], &arr[minIndex]);
}
}
int main(void)
{
int arr[5] = {3, 2, 5, 4, 1};
selectSort(arr, 5);
int i;
for (i = 0; i < 5; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}