選擇排序 簡單選擇排序和堆排序

2021-08-17 19:25:07 字數 679 閱讀 5870

1. 簡單選擇排序

(1)演算法思想:將序列的第乙個元素當作最小的元素,和後面的元素一一比較,將最小的元素下標標記出來,和第乙個元素進行交換,則一趟下來,第乙個元素一定是最小的,直到所有的元素全部排序完成。

(2)基本實現:

void selectsort(datatype* arr, int sz)

if (k != i)

}}

(3)演算法效能:

時間複雜度: o(n^2)

空間複雜度:o(1)

穩定性:不穩定

2. 堆排序

(1)演算法思想:

將乙個無序序列先構建成堆,再利用自上向下進行調整。

(2)基本實現:

void createheap(datatype* arr, int sz)

//堆排序

size_t end = sz - 1;

while (end)

}

void adjust(int*arr, int sz, size_t parent)

else

break;

}}

(3)演算法效能:

時間複雜度: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 ...