import java.io.*;
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于做网站、成都网站建设、沿滩网络推广、重庆小程序开发、沿滩网络营销、沿滩企业策划、沿滩品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供沿滩建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(args[0]));
String tmp;
ArrayList al = new ArrayList();//存储读进的单词列表
while((tmp = br.readLine()) != null) {//依次读取
al.add(tmp);//存进ArrayList
}
Collections.sort(al);//对ArrayList的内容进行排序
for(int i=0;ial.size();i++) {//打印出来
System.out.println(al.get(i).toString());
}
}
}
运行之前,你得自己制作一个文本文档,要求是utf-8的,用UE编辑器,存储成UTF-8无BOM格式,如果迹兄用记事本存的话,很可能读困好不出来,还需要转码,在文档里写汪州铅几行单词就可以,保存,比如命名为 a.txt
然后运行的时候,把这个名字,做为参数传进去就行了,你也是学程序的,知道这东西怎么弄,很简单的~
给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2)。
public static void bubbleSort(int[] arr){
for(int i =0; i arr.length - 1; i++){
for(int j=0; j arr.length-1; j++){
if(arr[j] arr[j+1]){
arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1];
}
}
}
}
2.选择排序
主要思路:每次遍历序列,从中选取最小的元素放到最前面,n次选择后猛谈轿,前面就都是最小元素的排列了,时间复杂度是O(n^2)。
public static void selectSort(int[] arr){
for(int i = 0; i arr.length -1; i++){
for(int j = i+1; j arr.length; j++){
if(arr[j] arr[i]){
arr[j] = arr[j]^arr[i];
arr[i] = arr[j]^arr[i];
arr[j] = arr[j]^arr[i];
}
}
}
}
3.插入排序
主要思路:使用了两层嵌套循环,逐个处理待排序的记录。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置,时间复杂度是O(n^2)。
public static 侍陆void insertionSort(int[] arr){
int 枝肆j;
for(int p = 1; p arr.length; p++){
int temp = arr[p]; //保存要插入的数据
//将无序中的数和前面有序的数据相比,将比它大的数,向后移动
for(j=p; j0 temp arr[j-1]; j--){
arr[j] = arr[j-1];
}
//正确的位置设置成保存的数据
arr[j] = temp;
}
}
4.希尔排序
主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序, 希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
public static void shellSort(int[] arr){
int j ;
for(int gap = arr.length/2; gap 0 ; gap/=2){
for(int i = gap; i arr.length; i++){
int temp = arr[i];
for(j = i; j=gap temparr[j-gap]; j-=gap){
arr[j] = arr[j-gap];
}
arr[j] = temp;
}
}
}
这个很简单,124行代码完美呈现。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class Search {
//你的文件夹路径
private String filePath="E:\\content5_5";
//关键字
private String keyWord="计算机";
private char[] keyWordAry;
private Listmessage msgList;
public Search(){
//统计各个文件做汪的词数
msgList=new ArrayListmessage();
//文件夹路径
File rootFile=new File(filePath);
//文件夹里面文戚胡野件
File[] listFile=rootFile.listFiles();
//关键字数组
keyWordAry=keyWord.toCharArray();
for(int i=0;ilistFile.length;i++){
if(!listFile[i].isFile()){
continue;
}
if(!listFile[i].getName().endsWith(".txt")){
continue;
}
//统计每一个文件词语出现的次数
getKeyWordCount(listFile[i]);
}
System.out.println("'计算机'在各个文件中出现的次数降序排列:");
//输出统计信息
for(int i=msgList.size()-1;i0;i--){
msgList.get(i).display();
}
}
protected void getKeyWordCount(File pFile){
InputStreamReader freader=null;
File aFile=pFile;
try {
FileInputStream fileInputs=new FileInputStream(aFile);
freader=new InputStreamReader(fileInputs,Charset.forName("GB2312"));
BufferedReader in=new BufferedReader(freader);
int tem=-1;
int count=0;
int index=0;
boolean ismatch=false;
while(true){
tem=in.read();
if(tem==-1){
break;
}
if(!ismatch index==0){
if(tem==keyWordAry[index]){
ismatch=true;
}
}
if(ismatch 高喊 tem==keyWordAry[index]){
index++;
if(index=keyWordAry.length){
count++;
index=0;
ismatch=false;
}
}
}
in.close();
freader.close();
addMessage(new message(aFile.getName(),count));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void addMessage(message pMsg){
for(int i=0;imsgList.size();i++){
if(msgList.get(i).countpMsg.count){
msgList.add(i, pMsg);
return;
}
}
msgList.add(pMsg);
}
public static void main(String[] args){
new Search();
}
}
class message{
public String fileName;
public int count;
public message(){
}
public message(String pName,int pCount){
this.count=pCount;
this.fileName=pName;
}
public void display(){
System.out.println(fileName+" count:"+count);
}
}
配置好你的文件夹路径和关键字,运行主方法就好了!
//简单选择排序,按自然顺序
public static void selectsort(int[] array){
int min, index, temp;
for(int i = 0; i array.length - 1; i++){ //散旦镇 N - 1 趟
min = i;
//查找选择最小元迟氏素值的下标索引值
for(index = i + 1; index array.length; index++){
if(array[min] array[index])
min = index;
}
/冲粗/交换
if(min != i){
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}