在昨天的文章中,我們探討了氣泡排序法的基礎和其在C++中的實現。現在,我們將鑽研另一種基礎排序演算法 — 選擇排序法。這種方法提供了一種不同的途徑來對數列進行排序,並且是進入排序演算法領域的另一個好起點。
選擇排序法簡介
選擇排序法(Selection Sort)的主要想法是反覆從未排序的部分找到最小(或最大)的元素,並將其放到已排序部分的末尾。這個過程一直持續到所有的元素都被排序。
C++實現
以下是使用C++實現的選擇排序法:
#include <iostream>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
int minIdx = i; // 最小值的索引
for (int j = i+1; j < n; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
// 交換 arr[minIdx] 和 arr[i]
if (minIdx != i) {
int temp = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = temp;
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
std::cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
性能考慮
選擇排序法的時間複雜度,無論在最好、最壞還是平均情況下,都是 ,其中 是數列的大小。儘管它比氣泡排序法在某些情況下更高效,但在大型數據集上,我們仍可能會尋找更高效的演算法。
在AI中的應用
正如氣泡排序法,選擇排序法本身在實際的AI應用中可能不是首選。但認識這種基礎的排序演算法有助於建立對更複雜演算法的理解,這些複雜演算法在處理大數據和複雜的AI問題時可能會很有用。