演算法之直接選擇排序

2021-07-28 10:51:21 字數 646 閱讀 7972

選擇排序的基本思想:每次都從待排序的檔案中選擇出排序碼最小的記錄,將該記錄放於已排序檔案的最後乙個位置,直到已排序檔案記錄個數等於初始待排序檔案的記錄個數字置。 這種思路導致的結果便是排出來的序列為從大到小;

選擇排序主要分:

1. 直接選擇排序

2. 樹形選擇排序

3. 堆排序

直接選擇排序是一種簡單的方法,首先從所有的n個待排序的記錄中選擇排序碼最小的記錄,將該記錄與第乙個記錄交換,再從剩下的n-1個記錄中選擇最小的記錄與第二個記錄做交換。一次迴圈,知道剩下兩個記錄時,再從中選出最小的記錄與第n-1個記錄交換。剩下的那乙個記錄肯定是最大的記錄。

當選出來的i-1個記錄放在前i-1個位置,接下來從剩餘的n-(i-1)個記錄中選出最小的記錄與第i個記錄交換。這裡只要設定乙個變數記下在查詢過程中最小記錄的位置,知道查完n-(i-1)個記錄。只要最小的位置不為i,就將最小的排序碼對應的記錄與第i個記錄交換;

void ******selectsort(table *tab)

if(k!=i) //只要最小的位置不為i,就將最小的排序碼對應的記錄與第i個記錄交換;

}}

直接選擇排序

時間複雜度 o(n^2). 使用乙個儲存記錄的附加空間

不穩定;

排序演算法之直接選擇排序

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...

排序演算法之直接選擇排序

直接選擇排序是將整個待排序序列分為兩部分,一部分為有序 最開始有序序列為空 一部分為無序 最終無序序列為空 有序序列中的數都不大於無序序列中的數。它的過程是每次都在無序中尋找乙個最小的數,然後將其與無序序列的第乙個數交換,並併入有序序列。則有序序列長度增1,無序序列長度減1。比如 對r 0 n 陣列...

每日演算法 選擇排序演算法之直接選擇排序

1 演算法簡介 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下 2 演算法描述和分析 n個記錄的檔案的直接選擇排序可經過n 1趟直接選擇排序得到有序結果 1 初始狀態 無序區為r 1.n 有序區為空。2 第i趟排序 i 1,2,3.n 1 第i趟排序開始時,當前...