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去比较。遍历字符串数组,使用插入排序比较大小(这里的排序方法你自己决定,可以是冒泡、插入、希尔排序、随机快排等等)。