2013-02-10 52 views
0

我想在C++中做一個並行qsort。我有數字排序好,我想要一個平行的二維字符數組向上或向下移動它的數字。這是我迄今爲止所擁有的。使用指針的Qsort並行陣列

int compare (const void * a, const void * b) 
    { 
     //this is for qsort 
     return (*(int*)b - *(int*)a); 
    } 

    void sort_scores(char** myArray, int *votes) 
    { 
     qsort ((myArray, votes), 5, sizeof(int), compare); 
    } 

我對數字進行了排序,但缺少移動字符一次,我似乎無法得到這個工作。任何幫助深表感謝。

+0

你介意描述你正在解決什麼問題嗎?聽起來你可以使用'std :: map'或者一些結構的向量。 – jrok 2013-02-10 11:06:36

回答

0

您可以創建指向投票的指針數組(也就是指向數組的每個元素的指針數組),並對指針進行排序,而不是自己排序投票。 (請記住相應地更新比較函數!它現在將接收必須轉換爲int **的參數)。 對新數組進行排序後,只需遍歷它,並使用指針差異來獲取原始數組中元素的索引。

+0

我不確定我是否清楚自己想要完成的工作。我傳入一個整數數組,它很好地排列並且是一個平行的二維字符數組。這是作業,所以爲了保持作業的精神,我必須使用兩個單獨的數組並進行某種排序。我明確指示不要使用類對象,它必須是二維字符數組。我想我會繞過學習經驗的本質,如果我只是把它們放在一個字符串數組和數組中,並進行冒泡排序。 – 2013-02-10 11:14:54

+1

在這種情況下,您將遇到的主要問題是'qsort'不支持這一點。你可以:1)對索引進行排序(就像我建議的那樣,或者以其他方式 - 這是一種非常常見的技術,我相信你會發現足夠的信息),或者2)編寫一個新的排序功能,在主數組中交換它們時,並行數組中的元素。後者可能是你要找的東西,但是,正如我所說的那樣,它會要求你寫一個排序函數,因爲'qsort'不會幫你。 – aaaaaa123456789 2013-02-10 11:30:21