请教大家一个基础的算法问题

2020-11-21 11:24:02 +08:00
 Rhianu

下面是用 js 实现的排序算法,将无序的数组按照从小到大的顺序排序。请问这种算是插入排序吗? 如果不是,这种算什么算法?

const arr = [4, 2, 3, 1, 5, 9, 6, 10, 7, 8]
const length = arr.length

for(let i = 0; i < length; i++) {
    for(let j = i; j < length; j++) {
        const a = arr[i]
        const b = arr[j + 1]
        if(b < a) {
            arr[i] = b
            arr[j + 1] = a
    	}
	}
}
2970 次点击
所在节点    程序员
24 条回复
akira
2020-11-21 22:13:05 +08:00
这样的话 应该就是冒泡了

const a = arr[j] <=== 换成 j
const b = arr[j + 1]
autogen
2020-11-22 10:44:45 +08:00
@BBrother 不是比较相邻元素,每次取[i+1,length)最小的元素放到 i,所以这个是选择排序
BBrother
2020-11-22 11:00:37 +08:00
@autogen 我看差了,把 i 看成 j 了
DEVN
2020-11-22 11:27:02 +08:00
一层就够了吧!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/727779

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX