字符串字典排序

把字符串以字典的展示形式排序,如把字符串'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,返回truevar 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,返回truevar 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;})

 

转载于:https://www.cnblogs.com/fe-huahai/p/5717799.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OC2_点语法(属性关键字)

// // Dog.h // OC2_点语法(属性关键字) // // Created by zhangxueming on 15/6/16. // Copyright (c) 2015年 zhangxueming. All rights reserved. //#import <Foundation/Foundation.h>interface Dog : NSObject //属性关键字 //assgin(缺省)直接赋值 //基本类型 …

matlab中获取view,ios 怎么获取一个view的位置

ios 怎么获取一个view的位置以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;ios 怎么获取一个view的位置打开appstore进入应用&#xff0c;右上角的分享按钮(从右往左数第二个)&#xff0c;拷…

eureka需要替换吗_Spring Cloud Alibaba迁移指南1:零代码从Eureka迁移到Nacos

作者&#xff1a;得少&#xff0c;校对&#xff1a;周立。在本号首发&#xff0c;欢迎转载。Spring Cloud官方宣布Spring Cloud Netflix进入维护状态&#xff0c;后续不再会有新的功能已成为事实。作为开发者&#xff0c;如何使用极简的方式替换Netflix相关组件成为首要解决的问…

P1134 阶乘问题

题目描述 也许你早就知道阶乘的含义&#xff0c;N阶乘是由1到N相乘而产生&#xff0c;如&#xff1a; 12! 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 479,001,600 12的阶乘最右边的非零位为6。 写一个程序&#xff0c;计算N(1<N<50,000,000)阶乘的最右边的非零…

JAVA TCP通信练习

2019独角兽企业重金招聘Python工程师标准>>> 1、Server端 package com.hhdys.serviceimpl;import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.…

[转载]UEditor报错TypeError: me.body is undefined

本文转载来自&#xff1a; UEditor报错TypeError: me.body is undefined 今天在使用UEditor的setContent的时候报错&#xff0c;报错代码如下 TypeError: me.body is undefined 或 Uncaught TypeError: Cannot set property innerHTML of undefined 错误的原因是没有等UEditor创…

微服务架构下的身份认证

从单体应用架构到分布式应用架构再到微服务架构&#xff0c;应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化&#xff0c;身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用&#xff0c;如何保证高效安全的身份认证&#xff1f;面对外…

php缓存注入,利用Thinkphp 5缓存漏洞实现前台Getshell

原标题&#xff1a;利用Thinkphp 5缓存漏洞实现前台Getshell*本文原创作者&#xff1a;WindWing&#xff0c;属于FreeBuf原创奖励计划&#xff0c;禁止转载000 背景网站为了实现加速访问&#xff0c;会将用户访问过的页面存入缓存来减小数据库查询的开销。而Thinkphp5框架的缓存…

mac版小达人点读包怎么安装_小达人点读笔扩容实战:16G变128G

随着小达人点读笔可以点读的童书越来越多&#xff0c;笔的容量就是个尴尬的问题&#xff1a;是处理掉手头的16G容量的旧点读笔&#xff0c;重新再买32G容量的新点记笔吗&#xff1f;如果32G容量也不够用怎么办&#xff1f;官方可没有更大容量的点读笔了。删除原先的点读内容&am…

序列化与反序列化(记住密码)

平常我们在做"记住密码"的时候,大多都是使用Cookie保存,然后设置保存的时间,但是上次Frame(窗体应用程序中)项目中,一直没找到怎么保存Cookie的方法,所以采用使用序列化的方法完成。 //序列化 1.引用命名空间 Using System.IO 2.登录成功序列化代码: if(cb_savepw…

看电子书的好处

省钱&#xff0c;基本上都能从网上下载到。 在电脑上和手机上都可以看&#xff0c;而且排除了对光源的要求&#xff0c;因为这些设备的屏幕本身自带光源。 做笔记时可以直接截屏保存&#xff0c;节省时间&#xff0c;或者是复制粘贴。 携带方便&#xff0c;要么下载到本地&a…

WorldWind源码剖析系列:可渲染对象类RenderableObject

RenderableObject是WorldWind中所有需要渲染的对象的父类&#xff0c;继承了接口IRenderable和Icomparable。其派生类体系如下所示。RenderableObject的成员如下所示。 RenderableObjectList也继承自RenderableObject。 接口Irenderable内部仅仅定义下面三个接口&#xff0c;分…

php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel

先上效果图&#xff1a;直接上代码//添加样式&#xff1a;.table-select-icon{position:absolute;right:10px;line-height:34px;color:#d3d3d3}.table-select-selected dl{display:block}.table-select dl{position:absolute;left:0;padding:5px 0;z-index:999;min-width:100%;…

家里wifi网速越来越慢_家里的wifi信号不好?有了它再也不怕网速慢啦

夏天太热&#xff0c;就想宅在家里刷刷剧、打打游戏、看看新闻。可是网速却不好&#xff0c;看一会儿&#xff0c;卡一会儿&#xff0c;本来天气就热&#xff0c;这样更加烦躁&#xff01;这WiFi信号怎么会这么差&#xff1f;有什么好办法能解决这个问题呢&#xff1f;只要有了…

html - meta name=viewport content=XX/ 标签常见属性及说明

<meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0.5, maximum-scale2.0, user-scalableyes" />在网页的<head>中增加以上这句话&#xff0c;可以让网页的宽度自动适应手机屏幕的宽度。其中&#xff1a;widt…

数据权限设计(原创)

数据权限是针对数据表中行级和列级的控制&#xff0c;相对操作权限&#xff0c;颗粒度更细&#xff0c;复杂度更高&#xff0c;因为在项目中也有相关需求&#xff0c;是直接通过硬编码sql查询条件控制的&#xff0c;后期维护起来比较困难。所以有了一些想法&#xff0c;后期也将…

python文件操作实验总结,[干货分享]Python文件操作技巧总结

引言小伙伴们&#xff0c;今天给大家讲解一下python程序下的文件操作完整技巧梳理&#xff0c;都是笔者总结的干货。通过本文阅读&#xff0c;不仅可以带来生产力提升&#xff0c;也可以开发小脚本为生活带来乐趣。首先不知道大家对python有没有了解&#xff0c;不太会用的小伙…

触摸事件

•如果想监听一个view上面的触摸事件&#xff0c;之前的做法是自定义一个view实现view的touches方法&#xff0c;在方法内部实现具体处理代码•通过touches方法监听view触摸事件&#xff0c;有很明显的几个缺点必须得自定义view由于是在view内部的touches方法中监听触摸事件&am…