• 字符串字典排序


    把字符串以字典的展示形式排序,如把字符串'abc','bad','aade','bdca'排列成''aade',abc','bad','bdca'。

    1.使用冒泡排序

    (1) 相邻两数据两两比较,较大的放到后面,直到把最大的字符串放在最后一个位置。

    (2) 从头开始再进行相邻数据两两比较,较大的放到后面,直到把第二大的字符串放在倒数第二个位置。

    (3) 依次类推,...,字符串从小到大依次排列。

            var arrStr = ['abc','bad','aade','bdca'];
            Array.prototype.toSortStr = function(){
                for(var i = 0;i < this.length - 1;i++){
                    for(var j = 0;j < this.length - i - 1; j++){
                        if(strCompare(this[j],this[j+1])){
                            var temp = this[j];
                            this[j] = this[j+1];
                            this[j+1] = temp;
                        }
                    }
                }
            }
            
            function strCompare(str1,str2){//str1大于str2,返回true
                var minLen,
                    strLen1 = str1.length,
                    strLen2 = str2.length;
                (strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
                for(var i = 0; i < minLen - 1; i++){
                    if(str1.charAt(i) > str2.charAt(i)){
                        return true;
                    }
                    if(str1.charAt(i) < str2.charAt(i)){
                        return false;
                    }
                }
                return false;
            }
            arrStr.toSortStr();

     2.使用快速排序

    (1) 以第一个元素为基准,把数组分为两部分,基准左边的字符串小于基准,基准右边的字符串大于基准。

    (2) 再把基准的两边的数组元素分别按照(1)处理。

    (3) 依次类推,进行递归,...,直到字符串顺序排列。

            var arrStr = ['abc','bad','aade','bdca'];
            function quickSort(arr,low,height){
                if(low >= height){
                    return;
                }
                var pivot = arr[low],
                    i = low,
                    j = height;
                while(i < j){
                    while(i < j && strCompare(arr[j],pivot)){
                        j--;
                    }
                    arr[i] = arr[j];
                    while(i < j && strCompare(pivot,arr[i])){
                        i++;
                    }
                    arr[j] = arr[i];
                }
                arr[i] = pivot;
                quickSort(arrStr,low,i - 1);
                quickSort(arrStr,i + 1,height);
            }
            
            function strCompare(str1,str2){//str1大于str2,返回true
                var minLen,
                    strLen1 = str1.length,
                    strLen2 = str2.length;
                (strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
                for(var i = 0; i < minLen - 1; i++){
                    if(str1.charAt(i) > str2.charAt(i)){
                        return true;
                    }
                    if(str1.charAt(i) < str2.charAt(i)){
                        return false;
                    }
                }
                return false;
            }
            quickSort(arrStr,0,arrStr.length-1);

    3.使用数组的sort方法

         var arrStr = ['abc','bad','aade','bdca'];
            
            arrStr.sort(function(str1,str2){
                var minLen,
                    strLen1 = str1.length,
                    strLen2 = str2.length;
                (strLen1 <= strLen2) ? minLen = strLen1 : minLen = strLen2;
                for(var i = 0; i < minLen - 1; i++){
                    if(str1.charAt(i) > str2.charAt(i)){
                        return 1;
                    }
                    if(str1.charAt(i) < str2.charAt(i)){
                        return -1;
                    }
                }
                return -1;
            })
  • 相关阅读:
    记处理PostgreSQL连接太多的问题
    记服务器迁移上云出现故障
    PostgreSQL-迁移同步序列
    为什么你的pgbouncer连接这么慢
    TS基础知识储备
    前端实在好用的工具类库 【后续持续添加若有请留言添加积累供大家使用】
    Vue 3 + Typescript + Vite2.0 搭建移动端 代码规范以及注意的点
    flutter2.0 环境搭建(window环境下Mac自行查看官网即可)
    vite2.0+vue3+ts前端最新热门技术项目搭建
    React官方状态管理库—— Recoil
  • 原文地址:https://www.cnblogs.com/fe-huahai/p/5717799.html
Copyright © 2020-2023  润新知