當前位置:首頁 » 編程語言 » java的排序

java的排序

發布時間: 2022-01-14 06:30:14

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中有哪幾種常用的排序方法

1、冒泡排序
冒泡排序是一個比較簡單的排序方法。在待排序的數列基本有序的情況下排序速度較快。若要排序的數有n個,則需要n-1輪排序,第j輪排序中,從第一個數開始,相鄰兩數比較,若不符合所要求的順序,則交換兩者的位置;直到第n+1-j個數為止,第一個數與第二個數比較,第二個數與第三個數比較,......,第n-j個與第n+1-j個比較,共比較n-1次。此時第n+1-j個位置上的數已經按要求排好,所以不參加以後的比較和交換操作。例如:第一輪排序:第一個數與第二個數進行比較,若不符合要求的順序,則交換兩者的位置,否則繼續進行二個數與第三個數比較......。直到完成第n-1個數與第n個數的比較。此時第n個位置上的數已經按要求排好,它不參與以後的比較和交換操作;第二輪排序:第一個數與第二個數進行比較,......直到完成第n-2個數與第n-1個數的比較;......第n-1輪排序:第一個數與第二個數進行比較,若符合所要求的順序,則結束冒泡法排序;若不符合要求的順序,則交換兩者的位置,然後結束冒泡法排序。
共n-1輪排序處理,第j輪進行n-j次比較和至多n-j次交換。
從以上排序過程可以看出,較大的數像氣泡一樣向上冒,而較小的數往下沉,故稱冒泡法。

2、選擇排序
選擇法的原理是先將第一個數與後面的每一個數依次比較,不斷將將小的賦給第一個數,從而找出最小的,然後第二個數與後面的每一個數依次比較,從而找出第二小的,然後第三個數與後面的

3、插入排序
插入排序的原理是對數組中的第i個元素,認為它前面的i-1個已經排序好,然後將它插入到前面的i-1個元素中。插入排序對少量元素的排序較為有效.

4、快速排序
快速排序是對冒泡排序的一種改進。它的基本思想是:通過一次排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按次方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此大道整個數據變成有序序列。

Ⅲ 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 配列排序

按照你的思路把程序改了一下,你看看是不是你想要的結果。程序如下:
public class A {
private static void selectionSort(int a[], int n) {
//臨時變數 存放較小的值
int min;
//排序
for (int i = 0; i < n; i++) {
for (int j = (n-1); j > i; j--) {
if (a[j] < a[j - 1]) {
min = a[j];
a[j] = a[j - 1];
a[j - 1] = min;
}
}
}
//輸出
for (int i = 0; i < n; i++) {
System.out.print(a[i]+" ");
}
//換行
System.out.println();
}

public static void main(String[] args) {

int a[] = { 12,5,10,15,9,2 };
int b[] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
int c[] = { 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 };

selectionSort(a, a.length);
selectionSort(b, b.length);
selectionSort(c, c.length);
}
}

Ⅳ java基礎java中的排序知識按某個條件進行排序

Collections.sort(list,new Comparator<Object>(){
@Override
public int compare(Object o1, Object o2) {
return 0;}});

Ⅵ java中的排序

在java.util包裡面有一個Arrays類,是專門對數組處理的,裡面就有一些排序與搜索演算法,這是不需要自己去寫的。

java是開源的,它的類庫都有源代碼,在你的jdk的安裝目錄下有一個src.zip的壓縮文件,裡面都是java類庫的源代碼。你去看看吧,找到Arrays類,看看裡面是這么些的。建議用UltraEdit打開,因為這些源代碼是dos格式的

Ⅶ java 排序

public class P
{
public static void main(String[] args)
{
String str="abc";
int loop=str.length()+1;

while(loop>0)
{
System.out.println(str);
str=str.charAt(str.length()-1)+str.substring(0,str.length()-1);
loop--;
}
}
}

Ⅷ java中排序方法有哪些

1、直接插入排序:最基本的插入排序,將第i個插入到前i-1個中的適當位置。
2、折半插入排序:因為是已經確定了前部分是有序序列,所以在查找插入位置的時候可以用折半查找的方法進行查找,提高效率。
3、 希爾排序: 又稱縮小增量排序法。把待排序序列分成若干較小的子序列,然後逐個使用直接插入排序法排序,最後再對一個較為有序的序列進行一次排序,主要是為了減少移動的次數,提高效率。原理應該就是從無序到漸漸有序,要比直接從無序到有序移動的次數會少一些。
4、 冒泡排序:反復掃描待排序序列,在掃描的過程中順次比較相鄰的兩個元素的大小,若逆序就交換位置。第一趟,從第一個數據開始,比較相鄰的兩個數據,(以升序為例)如果大就交換,得到一個最大數據在末尾;然後進行第二趟,只掃描前n-1個元素,得到次大的放在倒數第二位。以此類推,最後得到升序序列。如果在掃描過程中,發現沒有交換,說明已經排好序列,直接終止掃描。所以最多進行n-1趟掃描。
5、快速排序: 思想:冒泡排序一次只能消除一個逆序,為了能一次消除多個逆序,採用快速排序。以一個關鍵字為軸,從左從右依次與其進行對比,然後交換,第一趟結束後,可以把序列分為兩個子序列,然後再分段進行快速排序,達到高效。
此外還有選擇、歸並、分配排序等等及它們的子類排序

Ⅸ java升序排序

其實排序JAVA已經給我們做好了, 你只是需要自己去調用|: 聲明一個import java.util.Collections;再實現implements Comparator 通過Collections調用new 實現implements Comparator的類就行了 下面是代碼: package 別人的程序的分析設計; /** * @author greatwqs * */ import java.util.Collections; import java.util.*; public class myQuiz{ public static void main(String[] args) { Employee e1 = new Employee("Cay",4000); Employee e2 = new Employee("Bush",6000); Manager m1 = new Manager ("Alice",5000); //m1.setBonus(100000); List<Employee> list_1=new ArrayList<Employee>(); list_1.add(e1); list_1.add(e2); list_1.add(m1); System.out.println("以下按薪水排序後輸出[從高到低]"); Collections.sort(list_1,new Qing()); for(Employee e:list_1) System.out.println(e); List<Employee> list_2 = new ArrayList<Employee>(); list_2.add(e1); list_2.add(e2); list_2.add(m1); System.out.println("以下按照姓名字典順序輸出:"); Collections.sort(list_2 , new Song()); for(Employee em :list_2){ System.out.println(em); } } } class Qing implements Comparator{ public int compare(Object obj0, Object obj1){ Employee c0 = (Employee)obj0; Employee c1 = (Employee)obj1; if(c0.getSalary() >= c1.getSalary()) return -1; else return 1; } } 下面還有代碼..

Ⅹ 關於java排序

假設順序表A => aList 順序表B => bList 順序表C => cList
從小到大的升序排列 按照字元串第一個字母進行排序
List<String> aList = new ArrayList<String>();
List<String> bList = new ArrayList<String>();
假設aList和bList里都有值
List<String> cList = new ArrayList<String>();
先將 cList.addAll(aList);
cList.addAll(bList);
A和B存到C中
然後:繼承介面Comparator 下面是重寫方法:
public int compare(Object element1, Object element2) {
String lower1 = (String)element1;
String lower2 = (String)element2;
String str1 = "";
String str2 = "";
str1 = lower1.charAt(0);
str2 = lower2.charAt(0);
if(str1.compareTo(str2)<0)
{
return 1;
}
else
{
return 0;
}

}

這個方法通過取每個字元串的第一個字母來判斷順序
然後再新建一個類,將cList當參數傳過來
Comparator comp1 = new SortByABC(); //SortByABC是上面那個類名
Collections.sort(cList, comp1);
return cList; //這樣就返回排過序的list了

熱點內容
linux是免費的嗎 發布:2024-11-15 15:53:44 瀏覽:616
多控存儲 發布:2024-11-15 15:52:42 瀏覽:282
一年級數學分解演算法 發布:2024-11-15 15:41:08 瀏覽:410
安卓個人熱點怎麼分享 發布:2024-11-15 15:40:16 瀏覽:263
墊錢解壓 發布:2024-11-15 15:38:54 瀏覽:335
miui4相當於安卓什麼系統 發布:2024-11-15 15:37:54 瀏覽:708
rc4android 發布:2024-11-15 15:27:25 瀏覽:741
電腦伺服器機箱圖片 發布:2024-11-15 15:27:18 瀏覽:114
網頁緩存文件提取 發布:2024-11-15 15:24:42 瀏覽:144
sqlserver提高 發布:2024-11-15 15:24:40 瀏覽:659