選擇排序分為簡單選擇排序和堆排序
簡單選擇排序是一種不穩定排序演算法,從未排序序列中選擇關鍵字最小的元素與該序列中第乙個關鍵字交換位置,每一趟排序可以確定乙個元素的最終位置,空間複雜度:o(1),時間複雜度:o(n²)。
堆排序是一種不穩定排序演算法,堆排序分為大頂堆和小頂堆,本**所用為大頂堆,基本思路:大根堆的堆頂為最大值,且其餘非根結點的值小於等於其雙親結點,在雙親結點和孩子結點交換位置時,要選擇孩子結點中更大的那乙個值,空間複雜度為:o(1),時間複雜度為:o(n㏒₂n)。
void
headadjust
(elemtype a,
int k,
int n)
}//前面沒有每一次比較都互相交換,而是直接賦值,這裡把被篩選的結點放入最終位置
a[k]
= a[0]
;}void
buildmaxheap
(elemtype a,
int n)
void
heapsort
(elemtype a,
int n)
}
簡單選擇排序和堆排序
堆排序是基於堆進行排序的演算法,將待排序的序列構造成乙個大頂堆或小頂堆,此時整個序列的最小值或最大值就是堆頂的根結點,將其移走,然後將剩餘的n 1個序列重新構造成乙個堆,這樣就會得到n個元素中的次大值,反覆執行,就可以得到乙個有序序列。簡單選擇排序 public static void select...
堆排序和簡單選擇排序
簡單選擇排序就是每次從i到n 1中選擇最小的數,然後放在第i個位置,其演算法複雜度為o n2 堆排序是簡單選擇排序的改進,通過建立最大堆,每次將最大堆的根節點取出放在最後的位置,然後再重新調整為最大堆,時間複雜度為o nlogn 簡單排序演算法 void select sort sqlist l 簡...
選擇排序 簡單選擇排序和堆排序
1.簡單選擇排序 1 演算法思想 將序列的第乙個元素當作最小的元素,和後面的元素一一比較,將最小的元素下標標記出來,和第乙個元素進行交換,則一趟下來,第乙個元素一定是最小的,直到所有的元素全部排序完成。2 基本實現 void selectsort datatype arr,int sz if k i...