幾種基本的排序演算法

2021-07-16 03:37:25 字數 2375 閱讀 1234

1.氣泡排序:

氣泡排序的目標就是通過第一次迴圈將最大(最小)的數找出來,第二次迴圈將次大(次小)的數找出來....................,

氣泡排序在最壞情況下的時間複雜度為o(n^2),平均時間複雜度:o(n^2),最好情況下的時間複雜度是:o(n),演算法穩定。

**:

//氣泡排序

public class bunnlesort

}} }

public static void main(string args) ;

sort(a);

for(int ok:a)

}}

2.選擇排序:

選擇排序的目標是在一堆未排序的數中選出最小的元素存放在第乙個位置,然後再從剩餘的未排序的數中選出第二小的數,然後存放在第二個位置....,直到所有的元素都排序完畢。

選擇排序演算法的時間複雜度都是:o(n^2),演算法穩定。

**:(待新增)

**:

//選擇排序

public class selectsort

}} }

public static void main(string args) ;

selectsort(a);

for(int ok:a)

}}

3.插入排序

插入排序的目的就是先把位置1到位置2的排好序,然後再將位置1~3的數排好序......然後再把所有的數都排好序。

(1),(1,2),(1,2,3)......(1,2,3....,k)

**:(待新增)

具體的步驟如下:

1.從第乙個元素開始,該元素認為是已近排序好的

2.取下乙個元素,在已經排序的序列中從後往前掃瞄

3.如果已排序組中的元素大於新元素,那麼將該元素移動到下乙個位置

4.重複步驟3,如果在已排序的組中找到比新元素更小的數,那麼演算法停止

5.將新元素插入到該位置上

6.重複步驟2

插入排序在最壞情況下的時間複雜度為o(n^2),最好情況下的時間複雜度是:o(n),演算法穩定。

//插入排序

public class insertsort

if(left != i)}}

public static void main(string args) ;

sort(a);

for(int ok:a)

} }

5.堆排序

在進行堆排序之前,我們首先要了解乙個概念,堆分為大頂堆和小頂堆,key[i]>=key[2i+1]&&key[i]>key[2i+2]稱為大頂堆,key[i]<=key[2i+1]&&key[i]>key[2i+2]的稱為小頂堆,了解了以上的知識之後,我們開始堆排序的講解。

1.首先,假設排序的數一共有n個,我們把所有的資料構造成乙個大頂堆(這樣我們得到了這組數中的最大值)

2.將堆頂和最後乙個元素互換(最大的乙個元素就被排在了最後的位置上)

3.然後將剩下的n-1個數構造成乙個大頂堆(找到了次大的數)

4.將此刻堆頂的值和倒數第二個葉子節點進行互換

5.重複上述的步驟,知道所有的元素排序完畢!

//因為二叉樹的根節點經過buildmaxheap後必定是最大值

//然後交換一下下面的節點和根節點就可以把所有的元素從小到大排序

public class heapsort ;

for(int i=0;i=0;i--);

mergesort(a,0,a.length-1);

for(int ok:a)

} private static void mergesort(int a, int start, int end) ;

public static void main(string args)

system.out.println("");

shellsort(index);

system.out.println("排序後: ");

for(i=0;iindex)break;

}a[pointer+datalength]=temp;

if(change)

while(guardi

以上就是我對一些常見的排序演算法的一些總結,本來想每個演算法都配乙個圖例,但是自己不會做那種圖,如果有時間的話再補上~~

附:

幾種基本排序演算法的總結歸納

概述 排序有內部排序和外部排序 我們討論的八大排序是內部排序 當n較大時,則應採用時間複雜度為o nlog2n 的排序演算法 快速排序 堆排序或歸併排序。快速排序shimuqian基於比較的內部排序中被認為最好的方法,當待排序的關鍵字是隨機分布時,快速排序的平均時間最短 各種排序的穩定性,時間複雜度...

幾種基本排序

1.快速排序 快速排序就是用遞迴把陣列拆分成最小單元在組合起來 func fastsort slice int int index len slice 2 value slice index leftslice int rightslice int for i 0 i len slice i els...

幾種排序的演算法

插入排序 將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料 def insert sort list count len list 算出列表長度用於控制迴圈次數 for i in range 1,count key list i 列表中每個值 j i 1 j 比 i 值小...