英文单词排序。
来源:互联网 发布:cpi历年数据 编辑:程序博客网 时间:2024/04/20 08:10
对于大批量英文单词的排序。
import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Map;public class ESort {static List<String> list = new ArrayList<String>();static{File f = new File("E:/sowpods.txt");try {InputStreamReader input = new InputStreamReader(new FileInputStream(f));BufferedReader read = new BufferedReader(input);String s;while((s = read.readLine())!=null){list.add(s);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}/*list.add("cabpeece");list.add("lavation");list.add("caaysome");list.add("zygobranchs");list.add("hierarchizing");list.add("teamworks");*/}public static void main(String[] args) {ESort e = new ESort();long s = System.currentTimeMillis();e.sort(list, 0, list.size()-1);long en = System.currentTimeMillis();System.out.println(en-s);//for (int i = 0; i < list.size(); i++) {//System.out.println(list.get(i));//}}public void sort(List<String> mlist,int low,int height){if(low < height){int s = adj(mlist,low,height);sort(mlist,low,s-1);sort(mlist,s+1,height);}}public int adj(List<String> mlist,int low,int height){String p = mlist.get(low);//一次排序保证左面所有数肯定比右面小while(low < height){while(low < height && (equals(p,mlist.get(height)) <= 0)){height--;}mlist.set(low, mlist.get(height));while(low < height && (equals(p,mlist.get(low)) >= 0)){low++;}mlist.set(height, mlist.get(low));mlist.set(low, p);}return low;}/** * a>b 1 * @param a * @param b * @return */public int equals(String a,String b){char[] achar = a.toCharArray();char[] bchar = b.toCharArray();int n = 0;int rs = 1;while(n < achar.length && n < bchar.length){rs = comp(achar[n],bchar[n]);if(rs == 0){n++;continue;}break;}return rs;}public int comp(char a, char b){if(a == b){return 0;}else if(a > b){return 1;}else{return -1;}}}
sowpods.txt数据为2.6万条。排序执行效率为1.4秒。
考虑换成并发处理。效率会更高。
0 0
- 英文单词排序。
- 按照英文单词排序
- 英文单词升序排序
- C++利用链表将英文单词排序
- 英文单词
- 英文单词
- 英文单词
- 英文单词
- 英文单词个数统计(从多到少排序)
- 第16周项目4英文单词排序
- 5-7 英文单词排序 (25分)
- 对英文单词按照字母顺序进行排序(升序or降序)
- 10.7 英文单词
- java英文单词
- 英文单词积累
- CCNA英文单词
- 英文单词,短语
- 一些英文单词。
- 乐观是乌云背后微笑的太阳
- 算法java实现--回溯法--电路板排线问题--排列树
- Android 图层引导帮助界面制作
- 【DP|LCS】POJ-1458 Common Subsequence
- 20、从头学Android之Android的数据存储--File
- 英文单词排序。
- 安卓绘制Canvas与坐标(一)
- 杭电oj-1004
- 数据结构与算法分析-用C语言实现队列(数组方式)
- 21、从头学Android之Android的数据存储--SD卡
- 如何快速审核评定美术作品
- android 退出程序三种方法及两种形式
- Ubuntu 配置QQ
- 屏蔽火狐页面光标快捷键