1. 簡單選擇排序
(1)演算法思想:將序列的第乙個元素當作最小的元素,和後面的元素一一比較,將最小的元素下標標記出來,和第乙個元素進行交換,則一趟下來,第乙個元素一定是最小的,直到所有的元素全部排序完成。
(2)基本實現:
(3)演算法效能:void selectsort(datatype* arr, int sz)
if (k != i)
}}
時間複雜度: o(n^2)
空間複雜度:o(1)
穩定性:不穩定
2. 堆排序
(1)演算法思想:
將乙個無序序列先構建成堆,再利用自上向下進行調整。
(2)基本實現:
void createheap(datatype* arr, int sz)
//堆排序
size_t end = sz - 1;
while (end)
}
(3)演算法效能:void adjust(int*arr, int sz, size_t parent)
else
break;
}}
時間複雜度:o(n logn);
空間複雜度:o(1);
穩定性:穩定
選擇排序 簡單選擇排序和堆排序
這裡的測試資料來自於之前自己隨便寫的生成器 include using namespace std intmain int t 10,arr 20 while t return0 簡單選擇排序 void selectsort int arr,int n if min i 簡單選擇排序 空間複雜度 使...
選擇排序(簡單選擇排序和堆排序)
選擇排序的基本思想 每一趟 例如第i趟 在後面n i 1 i 1,2,n 1 個待排序元素中選取關鍵字最小的元素,作為有序子串行的第i個元素,直到第n 1趟做完,待排序元素只剩下了1個,就不用再選了。1.簡單選擇排序 簡單排序演算法思想 假設排序表為l 1 n 第i趟排序即從l i n 中選擇關鍵字...
選擇排序 簡單選擇排序 堆排序
一 簡單選擇排序 對於n個數要進行n次排序,第一次,將最小的數放在第乙個。第二次,將第二小的樹,放在第二個。每次都和後面的數做比較,如果是從小到大的排序,當當前的數字比後面的大時,要進行交換。include void chosesort int a,int length void main int ...