iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
自我挑戰組

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

排序演算法 : 插入排序法

  • 分享至 

  • xImage
  •  

繼氣泡排序和選擇排序之後,我們將探索另一種經典排序算法:插入排序。插入排序的基本思想是逐個檢視數列中的每一項,將其放入前面已排序部分的適當位置。

插入排序法簡介
插入排序法(Insertion Sort)的操作類似於玩撲克牌時對手中的牌進行排序。對於數列中的每一項,我們都會找到它在已排序部分的正確位置並插入該位置。

C++實現
以下是使用C++實現的插入排序法:

#include <iostream>

void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;

        // 移動元素直到找到 key 的正確位置
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);

    insertionSort(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=O(n) 。由於這個特性,插入排序對於小型或部分排序的數據集是有效的。

在AI中的應用
雖然像插入排序這樣的基礎排序算法可能不會直接應用於AI,但在數據前處理、特徵提取和其他數據工程階段,可能會使用到它或它的變體。再者,理解這些基礎算法有助於培養良好的演算法思維,這對於解決AI中的更複雜問題至關重要。


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

尚未有邦友留言

立即登入留言