我沒有太多的經驗管理指針和其他高級功能,但我想如果有可能使用指針來交換數組的兩個元素之間的內存地址的算法,而不是複製和移動每個值時間(排序時的示例)。讓我解釋:可能在陣列的指數之間交換內存地址?
設想這樣陣列它有10種元素未排序,我裝用冒泡排序對它進行排序(以任何次序),典型的方法是使用一個輔助變量複製的元件和使用它作爲繞過每次我找到一個更小或更大的數字(取決於降序或增加排序)。
*----*----*----*----*----*----*----*----*----*----*
array[10] = | 45 | 21 | 32 | 48 | 32 | 22 | 47 | 10 | 11 | 12 |
*----*----*----*----*----*----*----*----*----*----*
^----- Imagine this is 10000
的程序來實現,該陣列[1]比數組[0]變小,所以氣泡排序將使用二次變量作爲旁路交換它們的值(這是典型的方式)。
*--------------*
| ^
| |
*--------------*--------------*----*----*----*----*----*----*
array[10] = | 45 | 21 | 32 | 22 | 47 | 10 | 11 | 12 |
*--------------*--------------*----*----*----*----*----*----*
| ^
| *------* |
*-->|BYPASS|---*
*------*
所以不可能說像交換&數組[0]和&陣列[1]的地址?所以我避免了二級變量?在這種情況下,& array [1] = 10000; & array [0] = 10004.
感謝您的關注和允許的所有建議!
不,它是一種數組索引對應於地址的簡單方法。但是,爲什麼你想避免臨時變量?如果你想分類的東西很大,你應該排序指針。 –
如果你能以某種方式改變某些東西的地址(而不是將它複製到新的地方,但是改變地址 - 無論這意味着什麼),世界將停止產生任何意義。不錯的頭像。 – harold