当前位置: 首页 > news >正文

网站有几个后台天津建站公司模板

网站有几个后台,天津建站公司模板,wordpress付费文章,ps制作网站效果图编程工作偶尔会遇到一些不常见问题需要处理#xff0c;学编程处理问题也难免需要熟悉一些算法以前学习的时候就遇到过一个看似简单的排序算法问题#xff0c;当时的解决办法是我没有用过的#xff0c;在此记录一下问题 - 英文字符串排序如下几个英文单词或者字母apple#…编程工作偶尔会遇到一些不常见问题需要处理学编程处理问题也难免需要熟悉一些算法以前学习的时候就遇到过一个看似简单的排序算法问题当时的解决办法是我没有用过的在此记录一下问题 - 英文字符串排序如下几个英文单词或者字母applecar afamilyskyapplicationappbabybackbackgroundbadbbbbbbeecafe cakecare排序后的结果是/**aappappleapplicationbabybackbackgroundbadbbbbbbeecafecakecarcarefamilysky**/规则逻辑通过结果可知a 与 app a排前面 (开头字母相同短的排在前面)back 与 backgroud back排在前面 (开头字母相同短的排在前面)application 与 baby application 排在前面(开头字母不同从a-z依次排序)设计实现a1 b2 c3 d4 e5 f6 g7 h8 i9 j10k11 l12 m13 n14 o15 p16 q17 r18 s19 t20u21 v22 w23 x24 y25 z26a代表的是 1b代表的是 2z 代表 26 就可以实现初步排序但是 bbbbb与 bee 两个单词要实现 bee 在前逻辑该怎么写呢起初想法是字母依次比较bbbbb 与 bee比较的第二个字母的时候 b 与 e 分别代表 2 和 5 所以bbbbb排前面问题是一个一个字母比较看起来很麻烦10个单词10个都要比较有以下解决方案都有用到递归方法一 通过单词获取权重进行排序(当初使用方法)​bbbbb b 2 b2 b2 b2 b2​bee b 2 e 5 e 5权重数 PxPx(bbbbb) 2 2 * 27^-1 2 * 27^-2 2 * 27^-3 2 * 27^-4 2.079Px(bee) 2 5 * 27^-1 5 * 27^-2 2.192通过这个计算方式可以获得权重值Px(bbbbb) Px(bee)所以 bbbbb 排在 baby 前面权重数27这里为什么是 27 不是26 是考虑到一种情况会导致排序失败比如 az 与 b比较Px(az) 1 26 * 26^-1 2Px(b) 2Px(az) Px(b) 显然是错的 将26 改为 27 就可避免这个错误优点不管是任何单词一千个也好得出每个字符串对应的权重值就能做到排序代码实现更新与2020-01-09后面做了优化区分字母大小写权重改为53public static void main(String[] args) {String[] noP {Baby,apple, car, A, family, B,b, Sky, application, app, baby, back, background,bad, bbbbb, bee, cafe, cake, care };String[] nopTop sortByWeights(noP);for (String string : nopTop) {System.out.print(string ,);}System.out.println();System.out.println(----------------------);for (String string : nopTop) {System.out.println(weights:\t getStrWeights(string,0) \t string);}}/*** for 权重排序**/public static String[] sortByWeights(String[] disorder) {double[] weightsArr new double[disorder.length];HashMap recordMap new HashMap();// 计算每个字符串的权重值for (int i0; iweightsArr[i] getStrWeights(disorder[i],0);recordMap.put(weightsArr[i],i);//保存权重值对应的字符串所在数组位置}// 将获取的权重值排序Arrays.sort(weightsArr);String[] sorderStr new String[disorder.length];int orderIndex 0;for (int i0; i// 拿出排好序的索引orderIndex recordMap.get(weightsArr[i]);sorderStr[i] disorder[orderIndex];}return sorderStr;}// 权重数值private final static double weightsNum 53;/*** for 计算字符串的权重值算法* param deep* param str* return weights*/public static double getStrWeights(String str,int deep) {int c str.charAt(deep);boolean isUppercase true;if(c 97) {c c - 32;isUppercase false;}c c - 64; // A,a - 1; B,b - 2int molecular c*2;if(isUppercase) molecular--; //if(B) - 3;if(b) - 4; for end [Baby,baby]// 这里考虑了大小写 如果字母是B 权重3/53 小写b 权重4/53 使小大小写也能排序double weights molecular/ (Math.pow(weightsNum, deep));return deep str.length() ? weights : weights getStrWeights(str,deep); //递归到字符串末尾}运行main方法控制台输出结果A,app,apple,application,B,Baby,b,baby,back,background,bad,bbbbb,bee,cafe,cake,car,care,family,Sky,----------------------weights:1.0Aweights:2.6151655393378426appweights:2.615328013590046appleweights:2.615329041941876applicationweights:3.0Bweights:3.0394956910738395Babyweights:4.0bweights:4.0394956910738395babyweights:4.040019613506452backweights:4.0400214752701284backgroundweights:4.0405838376646495badweights:4.076923067174232bbbbbweights:4.192239231043076beeweights:6.042075001511314cafeweights:6.045634987271372cakeweights:6.050551797792809carweights:6.050618967335452careweights:12.047115878410484familyweights:37.43289426842293Sky缺点考虑到前一种算法的计算如果单词长度超过20或者更长会导致计算量很大的问题如果有一百个单词比较计算很有必要如果只有两个单词bbbbbbbbbbbbbbbb 与 bar 比较 用权重法不合适因为只有两个单词没比较计算这么多就能得出排序结论下面就讲讲另一种排序算法方法二 逐个字母计算排序下面说一下新思路逐个比较applecar afamilyskyapplicationappbabybackbackgroundbadbbbbbbeecafe cakecare还是上面的单词首先获取每个字符串的第一个字母第一个字母为 a 的 全部取出apple a application app比较他们的第二个字母 a 没有第二个字母自然排在最前面依次类推使用递归即可完成排序因为临时想到的一种排序方法用到了TreeSet HashMap ArrayList 工具类感觉还可以后期优化。代码如下package javabasis.algorithm;import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeMap;/*** 字段排序算法** author Narule**/public class StringAlgorithm {/*** 逐个字母比较排序** param disorder* return orderly*/public static String[] nopTop(String[] disorder) {int index 0;int end disorder.length;String[] orderly new String[end]; // 新建排序后的数组TreeMap treeMap new TreeMap(); // 排序工具类key是按照大小排序的List list null;// 收集字符串首字母信息for (String str : disorder) {char cTag str.charAt(0);list treeMap.get(cTag);if (list null) {list new ArrayList(1);}list.add(str);treeMap.put(cTag, list);}// 通过收集的首字母信息给字符串排序Set keySet treeMap.keySet();for (char cTag : keySet) {list treeMap.get(cTag);if (list ! null list.size() 0) {if (list.size() 2) { // 如果只有一个字符串不需要递归for (String string : list) {orderly[index] string;index;}} else { // 如果有两个以上字符串开头字母相同可能需要递归排序ArrayList arrayList new ArrayList(0);for (String string : list) {if (string.length() 1) { // 字符串长度大于2的需要添加到list,准备下一次递归排序用到arrayList.add(string.substring(1));} else {orderly[index] string;index;}}if (arrayList.size() 1) {String[] array new String[arrayList.size()];int i 0;for (String string : arrayList) {array[i] string;i;}array nopTop(array); // 还需要递归排序 back background - ack ackgroundfor (String string : array) {orderly[index] cTag string;index;}} else if (arrayList.size() 1) {orderly[index] cTag arrayList.get(0);index;}}}}treeMap.clear();return orderly; // 排序后的字符串数组}public static void main(String[] args) {String[] noP { apple, car, a, family, sky, application, app, baby, back, background,bad, bbbbb, bee, cafe, cake, care };String[] nopTop nopTop(noP);for (String string : nopTop) {System.out.println(string);}}}此方法用到TreeMap,这是Java工具类自带排序效果对此有疑问可以查看java源代码或介绍文档优点没有很大的计算量缺点使用TreeMap ArrayList 对象递归过多也会出现内存损耗过大或者溢出的情况未完后期待优化
http://www.zqtcl.cn/news/672622/

相关文章:

  • 汉字叔叔花了多少钱做网站免费原创视频素材
  • 网站开发提现功能互联网推广工作好做吗
  • 做阿里渠道的销售要有哪些网站网站评论怎么做的
  • 建设中网站如何上传图片深圳营销型网站建设设计公司
  • 建设电商网站需要多少钱家具网页设计素材
  • 物流网站html5模板网站整站开发
  • 网站随机代码网站开发技术试验教程
  • 做翻译 网站吗仿京东电商的网站开发报价
  • 霞山网站建设公司网站开发怎样手机号验证
  • 大型门户网站建设苏州优化网站建设
  • 网站步骤怎么搭建个人网站
  • 荥阳网站建设公司wordpress会员上限
  • 采购需求网站建设呼伦贝尔网站开发
  • 东莞网站建设方案服务极速网站建设定制价格
  • 网站建设费记账福州百度网络推广
  • 中国农村建设网站邵阳房产网
  • 做非法网站网站上海备案查询
  • 网站制作要学哪些北京信管局 网站备案
  • 百度新闻源网站有哪些wordpress怎么配置七牛cdn加速
  • 山东城乡住房建设厅网站wordpress 购物网站主题
  • 石家庄制作网站查网站流量查询工具
  • 信誉好的永州网站建设静态网站的短处
  • wordpress主题汉化软件河南网站优化哪家好
  • 关于水果的网站建设前端页面设计
  • 随州网站推广哪家好河南网站seo营销多少费用
  • 重庆网站优化排名软件方案谁能做网站开发
  • 河南官网网站建设报价app网站制作多少钱
  • 做网站页面一般用什么软件网站建设项目说明书
  • 做国外lead应该做什么网站网站运营报告
  • 建立一个自己的网站需要多少钱我的世界查找建筑网站