官术网_书友最值得收藏!

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 算法運行效果

主站蜘蛛池模板: 珠海市| 安国市| 禹州市| 九台市| 环江| 泸州市| 安达市| 渭南市| 成都市| 文成县| 青田县| 朝阳县| 武鸣县| 汉沽区| 呈贡县| 于都县| 五家渠市| 甘肃省| 德庆县| 乐至县| 福安市| 正安县| 丰宁| 都安| 浮山县| 南康市| 梁河县| 清徐县| 临沂市| 石渠县| 团风县| 蕲春县| 乐至县| 吴忠市| 聊城市| 东海县| 大渡口区| 永和县| 连江县| 静宁县| 宜黄县|