算法进阶之——选择排序

5 篇文章 0 订阅
5 篇文章 0 订阅

在介绍选择排序之前,我们有必要先说一下数组和链表的区别。简单的来说就是:数组适合查询,链表适合新增和删除。

好了,下面我们开始正式进入选择排序算法。

     假设你的计算机存储了很多乐曲。对于每个乐队,你都记录了其作品被 播放的次数。 

你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队 排序。该如何做呢?

一种办法是遍历这个列表,找出作品播放次数最多的乐队,并将该乐队 添加到一个新列表中。

再次这样做,找出播放次数第二多的乐队。继续这样做,你将得到一个有序列表。

下面从计算机科学的角度出发,看看这需要多长时间。别忘了,O (n ) 时间意味着查看列表中的每个元素一次。例如,对乐队列表进行简单查找时,意味着每个乐队都要查看一次。

要找出播放次数最多的乐队,必须检查列表中的每个元素。正如你刚才看到的,这需要的时间为O (n )。因此对于这种时间为

O(n )的操作,你 需要执行n 次。需要的总时间为 O (n × n ),即O (n 2 )

选择排序是一种灵巧的算法,但其速度不是很快。快速排序是一种更快 的排序算法,其运行时间为O (n log n ),这将在下一章介绍。

现在我们先来看一下选择排序的规则是怎么样的。先看一下伪代码

小结:

计算机内存犹如一大堆抽屉。

需要存储多个元素时,可使用数组或链表。

数组的元素都在一起。

链表的元素是分开的,其中每个元素都存储了下一个元素的地址。

数组的读取速度很快。

链表的插入和删除速度很快。

在同一个数组中,所有元素的类型都必须相同(都为intdouble

等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值