計算機程序設計

快速排序作為編程方法

1960年,K. A.灰白開發了一種信息的快速分揀,成為最有名的。 如今,它被廣泛用於編程,因為它有很多積極的特性:它可以用於一般情況下,它需要額外的內存小的增加,不同類型的列表的兼容,易於實現。 但也有缺點,它具有快速排序:使用工作允許犯了很多錯誤,這是有些不穩定。

但是,它是研究最多的版本。 首付款,霍爾之後,很多做了密集的研究。 大基地成立於尋找花在工作,這是由經驗證據支撐了時間的理論問題。 有改善的基本算法,提高速度實際的建議。

快速排序是很常見的,它到處都可以找到。 在其基礎上的方法被實現TList.Sort,存在於(除1)的Delphi,時間的庫函數花費來完成,在的qsort C ++所有版本。

操作的基本原則,可以配製成“分而治之”。 它發生斷裂列表分為兩組,並進行排序通過自身各部分。 由此可見,更應注意的分離過程,在此期間,將發生以下情況:由基礎元件確定,並且已重新排列相對他的整個列表。 建一組候選的左側時,它的值小於所有其他傳輸規則。 事實證明,在排序列表中的主要元素是其應有的地位。 下一階段 - 用於相對於所述基座元件的兩側上的挑戰遞歸排序功能。 它結束的過程只能如果列表中只包含一個元素,即進行排序。 因此,為了掌握編程函數作為快速排序,有必要知道的較低級別的算法的工作:a)所述基體部件的選擇; b)中的最有效的排列的列表,以產生兩套具有更小和更大的值。

與第一原則熟悉。 當選擇基礎構件,最好應該從平均列表中選擇。 然後對折被分成相等的兩半。 只要計算出 平均值, 在列表中是非常困難的,所以即使是最快的排序繞過這個演算的一面。 但隨著最大或最小值基本元素的選擇 - 也不會是最好的選擇。 在情況下,一個的這樣的確定產生空列表將得到保證,並且第二滿。 因此,作為基底構件應選擇一個更接近平均值,但對最大和最小的結論。

一旦選擇確定,您可以繼續分解算法。 這種所謂的內環快速排序。 一切都建立在兩個快速訪問索引:先經過由左到右,第二,相反的元素,從右到左。 開始操作執行正確的:指數是名單上所有的值進行比較為主。 循環結束時該元素是小於或等於基準。 也就是說,有一個比較和降低指數的值。 在左側,當工作完成後,大於或等於價值。 在這裡,比較值的增加。

在這個階段,分割算法,其包括快速排序的,兩種情況可能發生。 第一個是左邊的指數小於右邊。 這表明一個錯誤,再就是它在列表中規定的元素在錯誤的順序。 輸出 - 改變自己的地方。 第二種情況是當兩個柱的是等於或交叉。 這表明該列表的成功分離,也就是說,工作現在已經完成。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhtw.atomiyme.com. Theme powered by WordPress.