当前位置:首页 » 编程语言 » java排序文件

java排序文件

发布时间: 2022-04-27 16:01:37

java怎么实现排序

Java实现几种常见排序方法

日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。
以下常见算法的定义
1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
2. 选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
3. 冒泡排序:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。
4. 快速排序:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
5. 归并排序:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
6. 希尔排序:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
https://www.cnblogs.com/wangmingshun/p/5635292.html

② java排序

importjava.io.File;
importjava.util.Arrays;
importjava.util.Comparator;

publicclassTest{
publicstaticvoidmain(String...args){
File[]files=getFilesOrder(newFile("c:/"));

for(Filef:files){
System.out.println(f.getName());
}
}

privatestaticFile[]getFilesOrder(Filefile){
File[]files=null;
if(file.exists()){
files=file.listFiles();
Arrays.sort(files,getComparator());
}
returnfiles;
}

privatestaticComparator<?superFile>getComparator(){
returnnewComparator<File>(){
@Override
publicintcompare(Fileo1,Fileo2){
if(o1.isDirectory()&&o2.isFile())
return1;
elseif(o2.isDirectory()&&o1.isFile())
return-1;
else
returno1.getName().compareTo(o2.getName());
}
};
}
}

File 可以是 “文件”,也可以是 “目录”,分开比较。

另外用 Comparator 比较方便。

③ java中的文件名排序问题

arraylist是无序的 就是说取出来的时候不一定会按原来放入的顺序给你排好
所以说如果你是以d1----d30的顺序插入的话,要想再以这个顺序取出来的话 不能用arrayList 改用LinkedHashSet这个类进行数据的插入和取出操作

④ JAVA里怎样对指定目录的文件按文件名排序

File类里面有个方法list()就是列出指定文件夹下面的所有的文件,下面是一个测试程序,我已经调试好了,希望能帮到你~!
还有问题可以HI我~!

import java.io.File;

public class ListFiles {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "D:\\";//文件夹的路径
File file = new File(path);
String[] files = file.list();
for(String f :files){
System.out.println(f);
}
}
}

⑤ JAVA读取文件 排序 写出文件

我特意写的规范了一些
楼主看一下希望有帮助吧
12楼写的太混乱了 3楼和我这个异曲同工吧
我建了Sutdent的类和对象 用接口进行了排序 这样方便一点感觉 最好不要用一对字符串当处理的对象 很混乱 组织成对象好些
如果不是遍历 是取出某有个特定下标的值 数组最好不要用数字 用有特殊意义的常量
这样可读性更强些
文件每行是一个记录的 用BufferReader和Writer最恰当 因为有readLine和writeLine方法
用集合类进行管理感觉对这种问题比较合适
这样复用性强一些感觉
还有可以改进的地方 感觉用串行化更好 但要是非输出文本 就这样吧

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Manager {

private BufferedReader input;
private BufferedWriter output;
private ArrayList<Student> students;//存放所有的学生对象的List

//读入文件
public void read() {
students = new ArrayList<Student>();
try {
this.input = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\2.txt"));
String s = new String();
while ((s = input.readLine()) != null) {
String[] nameAndScore = s.split(" ");
this.students.add(new Student(nameAndScore[Student.NAME],
Integer.parseInt(nameAndScore[Student.SCORE])));
}
this.sort();//按分数将学生排序
this.input.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

//写回文件
public void write() {
try {
this.output = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\3.txt"));
for (Student s : this.students) {
output.write(s.toString(), 0, s.toString().length());
output.newLine();
}
this.output.write(String.valueOf(this.average()), 0, String.valueOf(this.average()).length());//写入平均值
this.output.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}

//排序
private void sort() {
Collections.sort(this.students, new Comparator<Student>() {

public int compare(Student o1, Student o2) {
return o2.getScore() - o1.getScore();
}
});
}

//求平均值
public float average() {
float average = (float) 0;
for (Student s : this.students) {
average += s.getScore();
}
return average / (this.students.size());
}

public static void main(String[] args) {
Manager m = new Manager();
m.read();
m.write();

}
}

//Student类
class Student {

private String name;
private int score;
public static int NAME = 0;
public static int SCORE = 1;

public Student(String name, int score) {
this.name = name;
this.score = score;
}

public int getScore() {
return score;
}

@Override
public String toString() {
return name + " " + score;
}
}

⑥ java排序文件路径问题

这个,你可以使用集合的TreeSet实现自然排序啊!
FIle已经有comparable借口并且重写了compareTo方法,你写一个继承file类的新类,并且重写他的comparTo方法,如果"\"数一样,则返回0,否则返回自然比较的值即可!把路径都放进新类里,再把类放进treeset,自然能实现你要的排序。注意这里的"\"是转义字符,必须写成"\\"。再详细的,你可以自己再看看api!

⑦ java读取文件并对内容进行排序直接输出结果

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
publicclassTest{
publicstaticvoidmain(String[]args){
Filefile=newFile("data.txt");
List<String>list=newArrayList<>();
try{
BufferedReaderbr=newBufferedReader(newFileReader(file));
while(br.ready()){
list.add(br.readLine());
}
br.close();
}catch(IOExceptione){
e.printStackTrace();
}
for(inti=list.size()-1;i>1;i--){
for(intj=1;j<i;j++){
String[]split1=list.get(j+1).split(" ");
String[]split2=list.get(j).split(" ");
if(split1[1].compareTo(split2[1])>0){
Stringtemp=list.get(j);
list.set(j,list.get(j+1));
list.set(j+1,temp);
}
}
}
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}

热点内容
美嘉算法口诀 发布:2025-05-16 06:03:15 浏览:951
c程序编译连接 发布:2025-05-16 06:02:36 浏览:964
脚本魔兽 发布:2025-05-16 06:01:52 浏览:330
文件夹python 发布:2025-05-16 06:01:43 浏览:627
电脑我的世界服务器游戏币 发布:2025-05-16 05:27:25 浏览:487
索尼手机为什么不能用安卓10 发布:2025-05-16 05:18:46 浏览:784
蔚来es6选择哪些配置实用 发布:2025-05-16 05:18:05 浏览:130
小米如何扫码wifi密码 发布:2025-05-16 05:13:38 浏览:807
楼层密码是什么意思 发布:2025-05-16 05:13:37 浏览:13
创建文件夹失败 发布:2025-05-16 05:12:59 浏览:396