選擇排序的原理:
第一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的數據元素的個數爲零。選擇排序是不穩定的排序方法。
時間複雜度: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;
}