js中的选择排序

发布于 2022-09-12 23:18:59 字数 353 浏览 17 评论 0

在算法图解这本书中,介绍了选择排序,上面说到,选择排序是先遍历这个列表,找出最大值,将其添加到新的列表中,然后再依次找出第二大的值,继续加入新的列表,依次类推,最后得到的新列表就是排序后的列表。

但我在网页上搜索出来的用js实现的选择排序感觉跟上面说的那种思想有点不一样,具体体现在js实现的时候是通过交换位置而不是新建数组的方式,那从本质上来讲,这还属于选择排序吗?或者说是因为js的语言特征与Python有差异从而导致了实现上的不一样?有路过的大佬希望能帮忙解惑,感激不尽!
js中的选择排序

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最终幸福 2022-09-19 23:18:59

啊这。。。那就先看看选择排序的定义吧

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。——百度

很明确的一点是选择排序就是从未排序的序列中依次选择最大/小的一个出来放到一个序列中,如此N此后就会得到一个排序好的序列,那么问题就在于这个被放入的序列是否需要新起一个?答案是可以是新的,也可以是旧的,从空间复杂度来说显然用利用已经分配好的内存空间是更优的选择,将选择出的元素依次从数组的头部开始放入,并将位置的元素交换回选择出的元素位置,这样从放入的位置开始往前是已排序的,往后都是未排序的,符合选择排序的算法定义,也充分复用了原有的内存空间。
重要的是理解算法的思路,不是具体的代码实现,python那个版本的代码还对数组pop了呢,pop操作是会更改数组长度的,每个元素的索引都发生了变化,跟js版本交换位置没啥区别,甚至js版本只是交换两个元素,而pop可指不定要移动多少个元素

千纸鹤带着心事 2022-09-19 23:18:59

看这书也就图一乐,建议去看算法四吧至少不会出现这种睿智的写法,先不说选择排序是不是一个原地排序的算法就他这在原数组上进行pop操作,本来就不快的n方算法,被他这么一操作更是雪上加霜变成2倍n方
javascript那个才是标准的写法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文