1.氣泡排序:
排序基本思想:
乙個乙個的比較,將最大或者最小的數冒到最後面;
是穩定演算法
演算法時間複雜度:大於 n ^ 2;
// 預設從小到大
void mysort(int num, int len)
} }}
1.選擇排序:
排序基本思想:
乙個乙個的比較,將最大或者最小的數冒到最前面;
演算法時間複雜度: n ^ 2; 由於交換次數比較少(一般快冒泡6倍)
是穩定演算法
// 預設從小到大
void mysort(int num, int len)
} num[index] = num[i];
num[i] = temp;
}}
1.插入排序:
排序基本思想:
基於有序數列的排序,將大於(小於)的數插入到對應位置;
演算法時間複雜度: n ^ 2;
是穩定演算法
(略微優於冒泡)在特定情況下用非常好;比如輸入時進行插入排序就會有非常好的效果
// 預設從小到大
void mysort(int num, int len)
// 插入在應插入的位置
num[j+1] = temp;
}}
基本排序排序演算法
時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...
基本排序排序演算法
時空複雜度 氣泡排序 時間o n 2 額外空間o 1 插入排序 時間o n 2 額外空間o 1 選擇排序 時間o n 2 額外空間o 1 基數排序 時間o k n k logn max 額外空間o n 臨時儲存 o b 記數,b為基的大小 記數排序 時間o n k 額外空間o k 希爾排序 時間o ...
基本排序演算法
將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個,例如 排序前 70 80 31 37 10 1 48 60 33 80 1 80 31 37 10 70 48 60 33 80 選出最小值1 1 10 31 37 80 70 ...