【JavaScript】7-30 字符串的冒泡排序 (20分)
题目:
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。
输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。
输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。
输入样例:
|
输出样例:
|
思路:
参考整数冒泡排序法,不同的是输入行数要根据第一行的N,需要先读取到N值。
在JavaScript中字符串的大小可以直接用【>】或【<】进行比较,JS解释器会把字符串转换为ASCII码逐个字符依次比较。
JavaScript代码:
var readline = require('readline'); //创建一个readline接口实例 var readlineTest = readline.createInterface({ input: process.stdin, output: process.stdout }); var tempArray=[]; //创建数组来存储每一行的数据 var tempArrayIndex=0;//初始化数组的索引 readlineTest.on('line', function(line){ //将每一行的内容添加至数组tempArray tempArray[tempArrayIndex]=line; tempArrayIndex++; var line1 = tempArray[0].split(' ') var N = parseInt(line1[0]) var K = parseInt(line1[1]) var strArr = [] for (let i = 1; i <= N; i++) { strArr.push( tempArray[i] ) } //当已输入的行数达到最大输入的行数时,结束readline.Interface实例 if (tempArray.length == N + 1) { var ret = sort(N, K,strArr) console.log(ret) readlineTest.close(); } }); //当readlineTest执行'close'命令时,输入流关闭,程序结束。 readlineTest.on('close', function() { process.exit(0); }); function sort(N, K, strArr) { for (let i = 0; i < K; i++) { var max = strArr[0] for (let j = 1; j < N; j++) { if (max > strArr[j]) { strArr[j - 1] = strArr[j] strArr[j] = max } else { max = strArr[j] } } } var newarr = strArr.join('\n') return newarr }