當前位置:首頁 » 編程語言 » 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 02:29:09 瀏覽:814
安卓70能用什麼軟體 發布:2025-05-16 01:45:09 瀏覽:480
編程發展史 發布:2025-05-16 01:38:52 瀏覽:528
android圖片氣泡 發布:2025-05-16 01:38:40 瀏覽:885
文件加密編輯器下載 發布:2025-05-16 01:30:41 瀏覽:343
linuxapacheyum安裝 發布:2025-05-16 01:30:31 瀏覽:476
大連賓利浴池wifi密碼是多少 發布:2025-05-16 01:25:36 瀏覽:172
緩存數據生產服務 發布:2025-05-16 01:08:58 瀏覽:585
普通電腦伺服器圖片 發布:2025-05-16 01:04:02 瀏覽:971
伺服器地址和埠如何區分 發布:2025-05-16 01:03:17 瀏覽:834