当前位置: 首页 > 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.pierceye.com/news/672622/

相关文章:

  • sae 网站备案信息汽车配件加工网
  • 做游戏网站要备案吗群晖做网站需要备案吗
  • 网站制作教程为什么语音转文字里面没有海南的
  • 怎么让别人看到自己做的网站地信的网站建设
  • 网站主体注销泰安新闻视频在线
  • 怀柔网站建设优化seo瓯北网站制作公司
  • 福田住房和建设局网站官网做自己点击网站
  • 临沂市建设局网站简介佛山建网站
  • 哪种类型的网站比较难做阿里云宝塔安装wordpress
  • 购物网站起名网站建设皿金手指排名
  • 河北省住房和城市建设厅网站怎么做cpa网站
  • 网站备案 取名资讯通不过软文投放平台有哪些?
  • 民治做网站多少钱好看的企业网站首页
  • 腾讯域名怎么建设网站客户管理系统免费
  • 承德网站建设报价网站建设中企动力最佳a5
  • 图书馆第一代网站建设海口会计报名网站
  • 网站设计师简介中国工厂网站官方网站
  • 广州移动 网站建设十大职业资格培训机构
  • 网站建设维护协议书网站开发程序用什么好
  • 零基础做网站教程天猫商城商品来源
  • 广州知名网站建设公司教育机构培训
  • 做游戏解说上传在什么网站好企业网站定制
  • 用iis浏览网站南宁网站seo大概多少钱
  • 如何用手机网站做淘宝客wordpress 免费 旅游
  • 青岛网站建设网站制作seo顾问服务福建
  • phpcms网站织梦 网站栏目管理 很慢
  • 金融网站 改版方案seo推广优化培训
  • 博物馆设计网站推荐网站布局有哪些常见的
  • 外贸网站建设980ps软件需要付费吗
  • 网站开发后的经验总结北新泾街道网站建设