我們練習過用指標處理數字、回傳新陣列。這篇我們要來挑戰「指標 + 排序」的組合。
🧩LeetCode 2418 — Sort the People 題目說明
給定兩個陣列 names 和 heights,
每個人名字在 names[i],身高在 heights[i]。
請依照身高由高到低的順序輸出對應的名字。
範例如下
輸入:
names = ["Mary","John","Emma"]
heights = [180,165,170]
輸出:
["Mary","Emma","John"]
🧠 解題思路
1️⃣ 理解資料結構
這題其實是「同步排序」問題,names[i] 與 heights[i] 是一組,要同時交換位置。
2️⃣ 選擇排序 + 指標操作
我們可用最直觀的 selection sort:逐一找出最大值,然後與目前位置交換。這次不直接用 names[i],而是用 (names + i) 的寫法操作。
3️⃣ 用指標交換字串與整數
交換整數很好處理,但交換字串時要記得它本身是指標(char),因此只需交換指標位址,而不是複製整個字串。
✨ 學習心得
這題讓我深刻體會到「指標就是靈活的搬運工」:它可以搬整數,也能搬字串;而交換的只是一段記憶體位址,而非整個內容。
練到的重點包括:
1.如何同時操作多個不同型態的指標
2.排序時維持多陣列對應的正確性
3.理解「字串陣列」其實是 char**