选择排序
假设你是一位班主任,你要给你们班上同学这次模拟考试的成绩排名。首先,你可以采用遍历的方法。先找出分数最高的放在新列表的第一位,然后找出分数第二高的放在新列表的第二位。以此类推,就能在新列表中获得排名。但是,这样的效率就会比较低,需要的总时间为O(n2)。(这是用的大O表示法,不清楚这种表示法的朋友可以看这个介绍https://blog.csdn.net/qq_45835827/article/details/104654133)
选择排序是一种灵活的算法,但其速度不是很快。想要排序的速度变快,大家可以参考快速排列的方法。
下面就来看看示例代码(C++)
int findSmallest(int arr[], int len)
{
int smallest;
int smallest_index;
smallest = arr[0]; //储存最小的值
smallest_index = 0; //储存最小元素的索引
for (int i = 0; i < len; i++)
{
if (arr[i] < smallest)
{
smallest = arr[i];
smallest_index = i;
}
}
return smallest_index;
然后就可以用这个函数来编写选择排序算法了。
本博客内容参考自《算法图鉴》,也作为自己的学习笔记。欢迎交流讨论。