如何实现数组末位排序

发布于 2022-09-07 00:02:01 字数 622 浏览 9 评论 0

比如一个数组:

[235, 42, 8, 100]

现在需要按末位进行排序, 最后的结果应该是:

[100, 42, 235, 8]

请问:如何实现这个功能, 需要的是算法


感谢@lejoy指点, 一个简单的冒泡末位排序可以这样:

function sort(arr) {
    for (let i = 0; i < arr.length; i++) {
        for (let j = 1; j < arr.length; j++) {
            // 和冒泡排序差别就在这行...
            if (arr[j] % 10 < arr[j - 1] % 10) {
                let tmp = arr[j - 1]
                arr[j - 1] = arr[j]
                arr[j] = tmp
            }
        }
    }
    console.log(arr)
}
sort([55, 41, 32, 23, 19])

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

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

发布评论

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

评论(4

云之铃。 2022-09-14 00:02:01

和普通的排序方式一样。比如,冒泡排序:遍历,比较二者。区别在于:你这个需求,在比较的时候,两个值都 %10 取模, 小的放前面,大的放后面...

╰つ倒转 2022-09-14 00:02:01

其他语言怎么排js就怎么排吧 不实用内置函数不就纯算法了嘛

未蓝澄海的烟 2022-09-14 00:02:01

VisuAlgo的排序分类里选一个实现吧,逻辑搞不定的话右下角有伪代码。

爱格式化 2022-09-14 00:02:01

我的这个如果 末位相同可能就会有问题 你自己再处理一下, 但是就现在的数据是可以的

const arr = [235, 42, 8, 100]; // 末位排序
const map = {};
const lastArr = arr.map(i => {
    const str = i.toString();
    const strArr = [];
    for(let s of str) {
        strArr.push(s);
    };
    map[strArr[str.length - 1]] = i;
    return Number(strArr[str.length - 1]);
});
const newArr = [];
lastArr.sort().forEach(i => {
    if(i in map) {
        newArr.push(map[i])
    }
})
log(newArr) // [100, 42, 235, 8]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文