原理

选择排序是一种简单直观的排序算法。它的工作原理如下,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

排序图

代码实现

选择排序实现简单,适用于待排序元素较少的场景,时间复杂度为O(n^2),是不稳定排序。

#include <stdio.h>

// 选择排序
void selectSort(int arr[], int n) {
	int i,j,tmp;
	for (i = 0; i < n; i++) {
		for (j = i+1; j < n; j++) {
			if (arr[j] < arr[i]) {
				tmp = arr[j];
				arr[j] = arr[i];
				arr[i] = tmp;
			}
		}
	}
}

int main() {
	int arr[10] = {2,6,1,0,3,9,7,8,5,4};
	selectSort(arr,10);
	for (int i = 0; i < 10; i++) {
	  printf("%d,",arr[i]);
	}
	return 0;
}