首页 > 编程知识 正文

参数名按ASCII码大小排序 冒泡算法实现,冒泡排序算法怎么实现

时间:2023-05-04 09:52:25 阅读:279992 作者:3753

上一篇博客签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现中提到的排序方法实现都是利用系统的api,在这里想用一下底层算法来实现:

1.先看系统api实现 String[] data = new String[]{"key", "ba","ba", "ac", "bb","bbc","ccce","ccc"}; Arrays.sort(data); //System.out.println("compare***" + compare("bb", "bbc")); //System.out.println("compare***" + compare("ccce", "ccc")); //data = bubbleSort(data); for(String i:data){ System.out.println("array i***" + i); } =》 I/System.out: array i***ac array i***ba array i***ba array i***bb array i***bbc array i***ccc array i***ccce array i***key2.自己写排序算法实现 /** * 冒泡排序 */ public String[] bubbleSort(String[] array) { if (array.length == 0) return array; for (int i = 0, l = array.length; i < l - 1; i++) { for (int j = 0; j < l - 1 - i; j++) { if (compare(array[j], array[j + 1]) == 1) { String temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } return array; } /** * 比较2个String之间大小 */ public int compare(String o1, String o2) { //2者取最短 int length = Math.min(o1.length(), o2.length()); for (int i = 0; i < length; i++) { if (o1.charAt(i) < o2.charAt(i)) { return -1; } else if (o1.charAt(i) > o2.charAt(i)) { return 1; } } //程序运行到这 说明前面2者比较的部分是相等的,则继续比较长度 if (o1.length() < o2.length()) { return -1; } else if (o1.length() > o2.length()) { return 1; }else{ return 0; } } String[] data = new String[]{"key", "ba", "ba", "ac", "bb", "bbc", "ccce", "ccc"}; //Arrays.sort(data); System.out.println("compare***" + compare("bb", "bbc")); System.out.println("compare***" + compare("ccce", "ccc")); data = bubbleSort(data); for (String i : data) { System.out.println("array i***" + i); } I/System.out: compare***-1 compare***1 array i***ac array i***ba array i***ba array i***bb array i***bbc array i***ccc array i***ccce array i***key其他排序算法可自行实现,关键点在compare方法(比较2个String之间大小).

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。