iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
自我挑戰組

C++ AI 起步:編程進入智能世界系列 第 11

排序演算法 : 選擇排序法

  • 分享至 

  • xImage
  •  

在昨天的文章中,我們探討了氣泡排序法的基礎和其在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;
}

性能考慮
選擇排序法的時間複雜度,無論在最好、最壞還是平均情況下,都是https://chart.googleapis.com/chart?cht=tx&amp;chl=O(n%5E2) ,其中https://chart.googleapis.com/chart?cht=tx&amp;chl=n 是數列的大小。儘管它比氣泡排序法在某些情況下更高效,但在大型數據集上,我們仍可能會尋找更高效的演算法。

在AI中的應用
正如氣泡排序法,選擇排序法本身在實際的AI應用中可能不是首選。但認識這種基礎的排序演算法有助於建立對更複雜演算法的理解,這些複雜演算法在處理大數據和複雜的AI問題時可能會很有用。


上一篇
排序演算法 : 氣泡排序法
下一篇
排序演算法 : 插入排序法
系列文
C++ AI 起步:編程進入智能世界32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言