選擇排序和冒泡排序1樣,很簡單,而且也比冒泡排序更好理解。
原理:
從0位置開始,順次遍歷數組0-(n⑴)元素,選擇最?。ɑ蜃畲螅┑模c第1個元素交換。
從1位置開始,順次遍歷數組1-(n⑴)元素,選擇最?。ɑ蜃畲螅┑?,與第2個元素交換。
…
直到n⑴位置
代碼:
// 選擇排序
void selectSort(int arr[], int len)
{
int temp;
for (int i = 0; i < len; i++)
{
int minIndex = i;
for (int j = i; j < len; j++)
{
if (arr[j] < arr[minIndex])
{
minIndex = j;
}
}
if (minIndex != i)
{
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
圖解:
從arr[0]~arr[9], 選擇最小的1個arr[9]=1, 與arr[0]交換
從arr[1]~arr[9], 選擇最小的1個arr[8]=2, 與arr[1]交換
…
很簡單吧!
分析:
我們可以看到,1共比較了 1+2+…+n⑴ 次, 但是比排序更好的是,選擇選擇最小的數后只需要交換1次。時間復雜度: O(n2)。