選擇排序算法思想:
- 找到數組中從下标0開始的最小的元素,把它和下标為0的元素進行交換
- 找到數組中從下标1開始的最小的元素,把它和下标為1的元素進行交換
- 依次類推 ,直到數組有序
示例代碼:
#include <stdio.h>
void swap(int* i, int* j) {
int temp = *i;
*i = *j;
*j = temp;
}
void sort(int* N,int n) {
for (int i = 0; i < n; i++) {
int min = i; // 記錄最小的元素下标
for (int j = i + 1; j < n; j++) {
if(N[j] < N[min]) {
min = j;
}
}
if(min != i) {
swap(N + i, N + min);
}
}
}
int main(int argc, char **argv)
{
int N[10] = {1, 2, 3, 7, 8, 9, 10, 4, 5, 6};
sort(N,10);
for(int i = 0; i < 10; i++){
printf("%d",N[i]);
if(i < 9) printf(",");
}
return 0;
}
輸出:
1,2,3,4,5,6,7,8,9,10
Process finished with exit code 0
時間複雜度O(n2)