簡單選擇排序相當於對冒泡排序的一個改進,冒泡排序是每次比較都交換數據,而選擇排序則是有目的性的交換。簡單排序的基本思想是選出最小的數與首位交換,再選出第二小的數和次位交換,以此類推。簡單選擇排序的時間複雜度爲O(n^2),是一種穩定的排序。
//交換函數,用於交換L數組中下表爲i和下表爲j的值
void swap(int L[],int i, int j)
{
int temp = L[i];
L[i] = L[j];
L[j] = temp;
}
//簡單選擇排序
void SelectSort(int H[],int length)
{
int i = 0;
int j = 0;
int min = 0;
for (i = 0; i < length - 1; i++)
{
min = i; //先將第一個下標定義爲最小下標
for (j = i + 1; j < length - 1; j++)
{
//從第二個數據開始,如果比下標爲min的數小,就把該下標換成min下標,保證min下標中的數永遠都是最小的
if (H[min] > H[j])
{
min = j;
}
}
if (i != min) //如果當前下標不爲最小下標,就和最小下標交換數據
{
swap(H,i,min);
}
}
}
簡單選擇排序時間複雜度:
無論數據的有序情況如何,簡單選擇排序都要進行(n - 1) + (n - 2) + (n - 3) +...+1次比較,所以時間複雜度爲O(n^2)