• 【JavaScript】7-30 字符串的冒泡排序 (20分)


    题目:

    我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。

    输入格式:

    输入在第1行中给出N和K(1K<N100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

    输出格式:

    输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。 

    输入样例:

    6 2
    best
    cat
    east
    a
    free
    day

    输出样例:

    best
    a
    cat
    day
    east
    free

    思路:

    参考整数冒泡排序法,不同的是输入行数要根据第一行的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('
    ')
    
        return newarr
    }
  • 相关阅读:
    flask(十)使用alembic,进行数据库结构管理,升级,加表,加项
    Python sqlalchemy使用
    flask+script命令行交互工具
    flask+APScheduler 任务调度,计划任务,定时任务
    DBA日常工作职责
    Oracle 的 VKTM 进程
    linux
    UF2.0、O4、UFT、TA众明星背后的秘密
    ORA-01502: 索引或这类索引的分区处于不可用状态
    关于Optimizer_index_cost_adj参数的设置
  • 原文地址:https://www.cnblogs.com/moonskies/p/14338344.html
Copyright © 2020-2023  润新知