幾種簡單排序演算法總結以及實現

2021-10-04 02:17:28 字數 1372 閱讀 8080

以下例子均以公升序排序為例,佇列長隊為n(即**中的len)

氣泡排序

氣泡排序的本質在於交換,每一趟冒泡結束都選出最大的數放在佇列的尾部,整個過程會執行n-1趟,每一趟從左到右依次比較相鄰的兩個數,如果左邊的數比右邊的大,則交換順序。氣泡排序的演算法時間複雜度是o(n

2)

o\left(n^2\right)

o(n2

)

// 傳進來的是變數的位址,所以可以真正地修改變數 

void

swap

(int

*a,int

*b)//交換

void

bubble_sort

(int arr,

int len)

}}

選擇排序

選擇排序的思想是:對於乙個序列a中的元素a[0]~a[n-1],令i從0到n-1列舉,進行n趟操作,每趟從待排序部分[i,n-1]中選擇最小的元素,令其與待排序部分的第乙個元素a[i]進行交換,這樣元素a[i]就會與當前有序區間[0,i-1]形成新的有序區間[1,i]。選擇排序的演算法時間複雜度是o(n

2)

o\left(n^2\right)

o(n2

)

// 傳進來的是變數的位址,所以可以真正地修改變數 

void

swap

(int

*a,int

*b)//交換

void

select_sort

(int arr,

int len)

swap

(&arr[i]

,&arr[k]);

}}

插入排序

直接插入排序:對序列a的n個元素a[0]~a[n-1],令i從1到n-1列舉,進行n-1趟排序。假設某一趟時,序列a的前i個元素a[0] ~ a[i-1]已經有序,而範圍[i,n-1]還未有序,那麼該趟從範圍[0,i-1]中尋找某個位置j,使得將a[i]插入位置j後(此時a[j] ~ a[i-1]會後移一位至a[j+1] ~ a [i]),範圍[0,i]有序。插入排序的演算法時間複雜度是o(n

2)

o\left(n^2\right)

o(n2

)

void

insert_sort

(int arr,

int len)

//arr為待排序陣列,len為待排序陣列長度

arr[j]

=temp;

//插入位置為j

}}

幾種簡單排序

1 直接插入排序 直接插入排序 param inta return inta public static void insertsort int a a j 1 temp 2 希爾排序 希爾排序 param 陣列a 增量值d 迴圈次數num return 排好序的陣列a author adminis...

簡單排序總結

氣泡排序 第一輪 i 0 j 從 1 a.length 第二輪 i 1 j 從 2 a,length 1 因為第一層排序最大值已經找出,所以最後乙個值不用排序 第三輪.第length 1 輪 package sort test public class mao pao for int i 0 i f...

簡單排序演算法

package com.shine.sort 排序演算法 說明 排序演算法分為三種 插入排序 交換排序 選擇排序 1.插入排序 直接插入排序 折半插入排序 希爾排序 2.交換排序 氣泡排序 快速排序 3.選擇排序 直接選擇排序 堆排序 public class mysort 希爾排序 描述 1.將乙...