選擇排序法是一種不穩定的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的數據元素排完。
基本介紹
- 中文名:選擇排序法
- 外文名:Selection sort method
- 學科:計算機科學
- 分類:簡單選擇排序,樹型選擇排序
- 特點:不穩定
- 領域:數據結構
簡介
基本思想
算法描述
類別
性能分析
時間複雜度
穩定性
代碼示例
void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp;}void selection_sort(int arr[], int len) { int i,j; for (i = 0 ; i < len - 1 ; i++) { int min = i; for (j = i + 1; j < len; j++) if (arr[j] < arr[min]) min = j; swap(&arr[min], &arr[i]); }}template<typename T> void selection_sort(std::vector<T>& arr) { for (int i = 0; i < arr.size() - 1; i++) { int min = i; for (int j = i + 1; j < arr.size(); j++) if (arr[j] < arr[min]) min = j; std::swap(arr[i], arr[min]); }}def selection_sort(arr): for i in range(len(arr)-1): minIndex=i for j in range(i+1,len(arr)): if arr[minIndex]>arr[j]: minIndex=j if i==minIndex: pass else: arr[i],arr[minIndex]=arr[minIndex],arr[i] return arrif __name__ == '__main__': testlist = [17, 23, 20, 14, 12, 25, 1, 20, 81, 14, 11, 12] print(selection_sort(testlist))
public static void selectionSort(int[] arr) { int min, temp; for (int i = 0; i < arr.length; i++) { // 初始化未排序序列中最小數據數組下標 min = i; for (int j = i+1; j < arr.length; j++) { // 在未排序元素中繼續尋找最小元素,並保存其下標 if (arr[j] < arr[min]) { min = j; } } // 將未排序列中最小元素放到已排序列末尾 if (min != i) { temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } }
