伊莉討論區

標題: 排序問題 [打印本頁]

作者: s8640920032003    時間: 2023-6-21 09:53 PM     標題: 排序問題

本帖最後由 s8640920032003 於 2023-6-21 09:58 PM 編輯

今天繼續看了資料結構的教學影片

這次看的主題是各種排序演算法的介紹

這主題讓我想到之前有次幫朋友整理了幾百張有2位數編號的卡片

那時候我們用的方式就是MSD Radix sort

不過是人肉版XD 沒辦法用電腦幫忙處理

先從十位數開始分堆->然後再分個位數 (量少的分堆可直接肉眼排)

於是我就一時興起開始想到底這些演算法哪個比較適合人工用呢?

Insertion sort: 看起來人工排還OK,只是桌面要很寬能排成一列 (通過)

Selection sort: 幾百張裡要挑一張最大or最小的......眼睛直接找到脫窗 (淘汰)

Bubble sort: 幾百張慢慢交換,手痠死,卡片也被拿到爛掉 (淘汰)

Counting sort: 還要建每個號碼的counting表,太麻煩了 (淘汰)

Shell sort: 每次還要跳著看,根本NMSL (淘汰)

Quick sort: 還要找東西紀錄兩個index現在到哪了,遞迴的處理方式也有點複雜 (淘汰)

Merge sort: 每次都要從多個run裡面挑最小的,這動作感覺就很煩,沒辦法事先排序每個run,也不可能建selection tree,所以應該只有用2-way merge比較有意義 (淘汰)

Heap sort: 建堆積太麻煩,而且要佔據很大的桌面空間 (淘汰)

LSD Radix sort: 跟原本的MSD類似,只是每一pass還要把所有卡片收起來再分bucket,操作上有點小麻煩但應該還行 (通過)

Distributive counting sort: 同counting sort還要建表 (淘汰)


綜上所述,人工比較能用的只有Insertion sort跟Radix sort

而我們也剛好挑到其中一種

看來人類就算沒學過演算法 也會藉由經驗累積自動選出合適的方法(divide and conquer)呢!










歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!