取檔案 shell Shell排序演算法

2021-10-14 17:27:33 字數 847 閱讀 2481

一、shell排序演算法的介紹

希爾排序,也稱遞減增量排序演算法,是直接插入排序演算法的一種高速而穩定的改進版本。

先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d2二、shell排序演算法嚴格來說是基於插入排序的思想的,其又稱為希爾排序或者縮小增量排序。shell

排序演算法的排序流程如下:

(1)將有n個元素的陣列分成n/2個數字序列,第1個資料和第n/2+1個資料為一對,

(2) 一次迴圈使每乙個序列對排好順序。

(3)然後,再變為n/4個序列,再次排序。

(4)不斷重複上述過程,隨著序列減少最後變為乙個,也就完成了整個排序。

三、例子

Shell shell 判斷資料夾或檔案是否存在

1.資料夾不存在則建立,資料夾是directory if d data then mkdir data else echo 資料夾已經存在 fi 2.檔案存在則刪除,檔案 是file if f data filename then echo 檔案不存在 else rm f data filename...

elasticsearch分組排序取top N

比如有一張聯絡歷史表,裡面有使用者uid,號number,使用者所屬國家country,通話時長talktime幾個主要字段。現在的需求是要獲取平均通話時長最長的top 20個國家。先過濾掉一些不需要的資料,然後根據country分桶,在桶內求平均通話時長。最後根據每個桶的平均通話時長取top 20...

Linux檔案按某列排序取top 有關awk

目標 hive中的資料,按照每個類目使用者的總流量大小排序.現在需要取出每個類目的top10.hive中使用order by categoryid,traffic desc來對資料排序,但沒辦法對每個categoryid取top.因為limit是對整個最終結果產生影響,所以不能用limit來做.最後...