- C/C++數據結構與算法速學速用大辭典
- 陳銳 華慶一等
- 333字
- 2019-10-24 10:32:29
004 分拆順序表:左邊的元素小于等于0,右邊的大于0
編寫一個算法,把一個順序表分拆成兩個部分,使順序表中不大于0的元素位于左端,大于0的元素位于右端。要求不占用額外的存儲空間。例如,順序表(-12,3,-6,-10,20,-7,9,-20)經過分拆調整后變為(-12,-20,-6,-10,-7,20,9,3)。
【算法思想】
設置兩個指示器i和j,分別掃描順序表中的元素,i和j分別從順序表的左端和右端開始掃描。如果i遇到小于等于0的元素,則略過不處理,繼續向前掃描;如果遇到大于0的元素,則暫停掃描。如果j遇到大于0的元素,則略過不處理,繼續向前掃描;如果遇到小于等于0的元素,則暫停掃描。如果i和j都停下來,則交換i和j指向的元素。重復執行直到i≥j為止。
第1章\范例01-04.c


運行結果(見圖1.7)

圖1.7 算法運行效果
推薦閱讀
- SQL Server 從入門到項目實踐(超值版)
- Learning LibGDX Game Development(Second Edition)
- Raspberry Pi for Secret Agents(Third Edition)
- PHP網絡編程學習筆記
- SQL基礎教程(視頻教學版)
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- Python算法從菜鳥到達人
- Java EE 8 Application Development
- JavaCAPS基礎、應用與案例
- 51單片機C語言開發教程
- Mastering Web Application Development with AngularJS
- Java程序員面試筆試寶典(第2版)
- Hands-On JavaScript for Python Developers
- Secret Recipes of the Python Ninja
- Clojure Web Development Essentials