第一部分:演算法思想
選擇排序是一種簡單直觀的排序演算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
**第二部分:**演算法步驟
初始狀態:無序序列為r[0,n-1],長度n,有序區為空;
第i=1,…,n-1趟排序從當前無序區r[i-1,n-1]中選出最小的元素r[k],並將它與無序區的第1個記錄r[i-1]交換,則r[0,i-1]變為元素個數增加1的新有序區,r[i,n-1]變為元素個數減少1的新無序區;n-1趟選擇交換後結束。
**第三部分:**演算法動態演示
**第四部分:**部分**實現
void
sort_array
(int
*arr,
int n)
// 程式設計實現《選擇排序演算法》:將亂序序列arr轉化為公升序序列
// 函式引數:亂序整數陣列(無重複元素) 陣列長度
if(min!=i)
}}
資料結構 十大經典排序演算法
0演算法概述 0.1演算法分類 十種常見排序演算法可以分為兩大類 比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此也稱為非線性時間比較類排序。非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此也稱為線性時間非...
十大經典排序演算法之 選擇排序
選擇排序的工作原理簡單直觀,和氣泡排序也有異曲同工之處,它將需要排序的陣列分為有序區和無序區,首先在無序區選出最小的數,放到有序區的末尾 有序區為從小到大排序好的陣列,因此此時從無序區選出的最小的數一定大於有序區中最大的數 以此類推,直到陣列有序。時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好...
資料結構 十大經典排序演算法之氣泡排序
演算法思想 氣泡排序重複地遍歷待排序的數列,每次比較兩個相鄰元素,如果它們的順序錯誤就把它們交換。重複地進行遍歷直到沒有再需要交換時表示數列已經排序完成。演算法步驟 比較相鄰的元素 若第乙個比第二個大,則交換 遍歷開始第一對到結尾最後一對,執行步驟1 重複步驟1 2,直到排序完成。可改進的氣泡排序 ...