Java排序演算法 基礎篇

2021-08-17 18:13:37 字數 2185 閱讀 2928

前言

開發過程中經常會遇到各種對資料進行排序的事情,在平常使用中資料量小對於排序效能要求不高,但是在資料量以百萬為單位的資料排序時就是對你排序演算法的考驗了,以下總結幾種常用的排序演算法,記住,演算法沒有絕對只有因地制宜。

氣泡排序

一:介紹

氣泡排序演算法執行起來非常慢,但是在概念上他是排序演算法中最簡單的,因此氣泡排序在剛開始研究排序演算法時是乙個非常好的演算法。

二:概念

從左往右開始,比較兩個數大(小)時交換位置,依次便利序列中的數,每執行一次最右邊的數字都是最大(最小)的,執行完後即可排序好。

三:o複雜度

o(n2)

四:**

public static void bubblesort() }}

for (int i = 0; i < arr.length; i++)

system.out.println(" :count = " + count);

}

選擇排序

一:介紹

選擇排序是氣泡排序的乙個改進,他們都進行了相同次數的比較,但是選擇排序要比氣泡排序少的交換次數,所以選擇排序的效率是要高於氣泡排序的。

二:概念

首先選擇序列中最大(最小)的數與序列最左0位置替換,下標加1,繼續選擇右邊序列最大(最小)數與最左位置對比,依次執行這樣左邊的數永遠都是排序好的,執行完後序列排序好。

三:o複雜度

比較次數o(n2),交換次數要少得多

四:**

public static void selectsort() 

}if (temp >= 0)

}for (int i = 0; i < arr.length; i++)

system.out.println(" :count = " + count);

}

插入排序

一:介紹

大多數情況下插入排序是簡單排序中最好的一種,雖然插入排序仍然需要o(n2)的時間,但是在一般情況下他比氣泡排序快一倍,比選擇排序還要快一點。

二:概念

首先從位置1開始,將當前位置數插入到左側序列中保持左側序列排序不變,依次迴圈下標位置,執行完後排序完成。

三:o複雜度

比較次數o(n2),交換次數要更少

四:**

public static void insertsort() 

arr[j] = target;

}for (int i = 0; i < arr.length; i++)

system.out.println(" :count = " + count);

}

歸併排序

一:介紹

歸併排序大多用於兩個有序序列合併排序,他與上面幾種排序具有明顯的優勢,冒泡,插入,選擇要用o(n2)時間,而歸併排序只需要o(n*logn)時間,比如:n如果是10000,n平方就是100000000,而n(n*logn)只是40000,如果為這麼多資料排序歸併需要40s的話,插入則會需要將近28小時,歸併排序的劣勢是需要額外建立乙個總大小的序列集合來儲存排序好後的資料。

二:概念

兩個集合序列迴圈比較,大(小)的資料先填充到新序列中,迴圈完畢後繼續迴圈多餘未比較的資料填充到新序列後面的位置中,需要注意的是歸併排序只適用與兩個有序的序列集合,否則會排序失敗。

三:o複雜度

o(n*logn)

四:**

public static void guibinsort() ;

int arrayb = ;

int arrayc = new int[10];

int indexa = 0, indexb = 0, indexc = 0;

while (indexa < arraya.length && indexb < arrayb.length) else

}while (indexa < arraya.length)

while (indexb < arrayb.length)

for (int k = 0; k < arrayc.length; k++)

}

未完待續

Java基礎篇 排序

執行結果 13,24,57,69,80 process finished with exit code 0 二 選擇排序 public class demo3 for int index 0 index arr.length 1 index system.out.println arrays.tos...

java基礎篇《5》 常用陣列排序演算法

氣泡排序演算法 author lucien don public class bublesort n個數要比較n 1輪,外迴圈比較輪數,for int i 0 i1 i for int i 0 i 選擇排序法 author lucien don public class selectsort for...

演算法基礎之排序篇

排序 sorting 是計算機程式設計中的一種重要操作,它的功能是將乙個資料元素 或記錄 的任意序列,重新排列成乙個關鍵字有序的序列。排序是演算法裡面最基礎的東西,用到的地方很多,比如各種榜單,各類搜尋等。排序的方法也很多,下面一起回顧一下一些通用的排序方法。排序演算法一般考慮穩定性,平均時間複雜度...