以下例子均以公升序排序為例,佇列長隊為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.將乙...