跳到內容

演算法實現/排序/一些證明

來自華夏公益教科書,開放的書籍,開放的世界

本節以嚴格的標準數學語言描述了計算機程式中排序的邏輯系統。許多結果是顯而易見的,一些符號可能會在各種計算機科學教科書中找到。任何發現以下內容有任何缺陷的人都可以改進它。

第一作者在這裡應用的數學很複雜,但並不複雜。

注意對這些證明的傳統方法依賴於略微不穩定的假設。它採用了一種稱為“迴圈不變式”的裝置,該裝置是在底層程式結構方面定義的。以這種方式構建的證明可以在大多數優秀的演算法教科書中找到

基本概念

[編輯 | 編輯原始碼]

不可能對一個無序集合進行排序;但是排序通常並不關注集合,而是關注序列。那麼,讓我們精確地定義一下我們可以排序的序列,以及可能產生的結果。設S為任何具有全序關係的集合 (, , ...) 設A為該集合的有限子集。設J的有限子集,即自然數。現在繪製一個函式。集合J誘匯出所謂的置換群 Sym(J),即所有從JJ的雙射的集合。現在設。稍微思考一下就會讓讀者明白,這裡描述的集合正是序列元素的所有可能排列。當然, 是可能的,如果恰好一個置換交換索引,使得函式的值在索引處沒有改變;但這不是我們關注的主要問題。正如我們所看到的, 中只有一個函式是遞增的。(當 x ≥ y 意味著 f(x) ≥ f(y) 時,函式是遞增的)。


華夏公益教科書