鍍金池/ 問答/人工智能/ 如何實(shí)現(xiàn)數(shù)組末位排序

如何實(shí)現(xiàn)數(shù)組末位排序

比如一個(gè)數(shù)組:

[235, 42, 8, 100]

現(xiàn)在需要按末位進(jìn)行排序, 最后的結(jié)果應(yīng)該是:

[100, 42, 235, 8]

請問:如何實(shí)現(xiàn)這個(gè)功能, 需要的是算法


感謝@lejoy指點(diǎn), 一個(gè)簡單的冒泡末位排序可以這樣:

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])
回答
編輯回答
怣痛

其他語言怎么排js就怎么排吧 不實(shí)用內(nèi)置函數(shù)不就純算法了嘛

2018年1月17日 11:10
編輯回答
陌上花

VisuAlgo的排序分類里選一個(gè)實(shí)現(xiàn)吧,邏輯搞不定的話右下角有偽代碼。

2017年11月4日 16:25
編輯回答
憶當(dāng)年

和普通的排序方式一樣。比如,冒泡排序:遍歷,比較二者。區(qū)別在于:你這個(gè)需求,在比較的時(shí)候,兩個(gè)值都 %10 取模, 小的放前面,大的放后面...

2018年8月10日 01:09
編輯回答
夕顏

我的這個(gè)如果 末位相同可能就會(huì)有問題 你自己再處理一下, 但是就現(xiàn)在的數(shù)據(jù)是可以的

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]
2017年10月5日 02:58