一、什么是选择排序?
选择排序(Selection> sort)是一种简单直观的排序算法。工作原理:第一次从待排序的数据元素中选出最小(大)的元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法 。
(百度百科)
选择排序是一种不需要开辟额外的存储空间的比较简单和容易让人理解的排序算法。
注:由于其本身的时间复杂度过大所以不推荐将其用于对数据量较大的数据进行排序。
1.算法的复杂度如下:
- 时间复杂度O(n^2)
- 空间复杂度O(1)
二、算法原理
1.动画展示:
2.说人话:
该算法会对待排序数组进行N趟查找,并且每一趟都会在待排序数组中找出最小(大)值将其放在前面已经排好序的数据后面。
总结和实机代码(C版本)
代码展示:
#include <stdio.h>
int main()
{
int arr[10] = {
10,9,8,7,6,5,4,3,2,1 }; //待排序数组
int tmp = 0; //用来存储找到的最小值的下标
//选择排序
for (int i = 0; i < 10; i++)
{
tmp = i;
for (int j = i; j < 10; j++) //寻找待排序数据中的最小(大)值
{
if (arr[j] < arr[tmp])
{
tmp = j;
}
}
int p = arr[tmp];
arr[tmp] = arr[i];
arr[i] = p;
}
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
运行结果展示: