[問題] 如何在使用 qsort 之後 還能記住位置

看板C_and_CPP (C/C++)作者 (蛋蛋~)時間16年前 (2009/04/22 14:59), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
剛剛查到了可以直接用 Qsort 的方法 int values[] = { 40, 10, 100, 90, 20, 25 }; int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main () { int n; qsort (values, 6, sizeof(int), compare); for (n=0; n<6; n++) printf ("%d ",values[n]); return 0; } 現在情形是 有一個大小為images張數的 array 從頭到尾分別是query image 與 Database images 之間的距離 要是我直接像上面範例 將array 丟進去的話 排序之後我就不知道原本這個距離是在哪個位置 也就是不行用array位置來找出他是哪一張圖 (要顯示排序之後的result) 後來有想到方法是用 structure struct distance_list { float distance; int img_number; }; 可是這樣就不能丟進 qsrot排序 .... 麻煩大家幫我想想方法可以排序 也可以記住每個distance原來在array中的位置 感激不盡 ^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.51.123

04/22 15:01, , 1F
為什麼這樣就不能丟進 qsort 排... = =a
04/22 15:01, 1F

04/22 15:07, , 2F
你想一下為什麼要給他元素大小,要給他函式指標
04/22 15:07, 2F

04/22 15:09, , 3F
可以了 ... 把大小設成 struct 大小就好了 XD
04/22 15:09, 3F

04/22 15:10, , 4F
乾蝦樓上兩位 ~"~
04/22 15:10, 4F
文章代碼(AID): #19xi1JXb (C_and_CPP)
文章代碼(AID): #19xi1JXb (C_and_CPP)