JavaScript题解 | #字符串排序#

字符串排序

https://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

const rl = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
});

const inputs = [];

rl.on('line', (line) => {
    inputs.push(line);
}).on('close', () => {
    // handleStringSort(inputs);
    handleStringManualSort(inputs);
})

// 使用现场函数sort, sort默认试按字典顺序(字符的Ascii码大小)排
function handleStringSort(inputs) {
    const len = inputs[0];
    const word_arr = inputs.slice(1, len + 1);
    const sort_word_arr = word_arr.sort();
    for(let i = 0; i < sort_word_arr.length; i++) {
        console.log(sort_word_arr[i]);
    }
}

// 手动排,实现sort
// 方法1: 可以先定义26个字母的堆,遍历字符串数组,将其放到对应堆的数组里,最后按堆属性取出内容
// 方法2: 遍历字符串,按插入排序做(将后面的字符串插入到正确的位置)
function handleStringManualSort(inputs) {
    const len = inputs[0];
    const word_arr = inputs.slice(1, len + 1)
    // 插入排序
    for(let i = 1; i < word_arr.length; i++) {
        for(let pre = i - 1; pre >= 0 && word_arr[pre] > word_arr[pre + 1]; pre--) {
            swap(pre, pre + 1, word_arr);
        }
    }
    // 输出
    for(let i = 0; i < word_arr.length; i++) {
        console.log(word_arr[i]);
    }
}

function swap(a, b, arr) {
    let temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp; 
    return arr;
}

简单题简单做,对字符串的排序。

方法1:使用现成的sort函数,sort默认使用Ascii编码排序,就不用传入排序函数

方法2:手动实现sort,字符串的比较大小自动使用Ascii去比较。遍历字符串数组,使用插入排序比较大小(这里的排序方法你自己决定,可以是冒泡、插入、希尔排序、随机快排等等)。

全部评论

相关推荐

拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务