首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

快速排序一趟划分結果:以5為基准,(5,2,6,3,8) 可能得 (2,3,5,8,6) 等多種合法序列

     編輯:程式設計疑難解答

題目

初始序列 `(5,2,6,3,8)`,以第一個記錄 `5` 為基准進行一趟快速排序,結果為何?

分析

快速排序划分過程**依賴具體實現**(Hoare/Lomuto/雙向掃描),**同一基准可能產生不同合法划分結果**,只要滿足:
左側 ≤ 基准 ≤ 右側,基准位於最終位置。

選項檢查

選項序列基准5位置左側≤5右側≥5合法性
A2,3,5,8,6索引22,3 ✓8,6 ✓✓
B3,2,5,8,6索引23,2 ✓8,6 ✓✓
C3,2,5,6,8索引23,2 ✓6,8 ✓✓
D2,3,6,5,8索引32,3,6 ✗(6>5)8 ✓✗

結論

A、B、C 均為合法一趟划分結果,**D 不合法**(左側含 6 > 5)。
具體得哪個取決於划分算法實現細節(如是否交換相等元素、掃描方向)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved