2010-08-12 44 views
0

嗨,我是新來的iPhone。我正在做的是對圖像數組進行排序;該數組由22個元素組成。我正在寫的代碼爲:如何解決排序問題

NSMutableArray *images2 = [[NSMutableArray alloc] initWithArray:images] 
int n=22; 
for (int i=0;i<n;i++){ 

    for (int j=1;j<n-i;j++){ 
     if(count[j-1]>count[j]){ 
      int t = count[j-1] 
      count[j-1] = count[j] 
      count[j] =t ; 

      NSString *tempimage = [images objectAtIndex:j-1]; 
      [images2 replaceobjectAtIndex:j-1 withobject:[image2 objectAtIndex:j]]; 
      [images2 replaceobjectAtIndex:j withobject:tempimage]; 
     } 
    } 
} 
images = [[NSMutableArray alloc] initWithArray:images2]; 

它排序很好,但最終它取代了第21圖像。這有什麼錯?如果有任何錯誤,請發佈正確的代碼。我需要的是將第一張圖像替換爲最後一張圖像和第二張圖像。

+0

你從哪裏得到'count'數組? – kennytm 2010-08-12 10:24:23

+0

你能清理你的代碼嗎?在for循環中添加適當的縮進,並且如果語句會使這更容易閱讀。你也在第一行代碼中丟失了括號。 – kubi 2010-08-12 10:25:38

+0

此外,它看起來像你正在排序的字符串數組,而不是圖像。 – kubi 2010-08-12 10:26:32

回答

1

解決您的問題:不要實現自己排序,讓框架爲您做。 NSMutableArray有許多排序方法可以爲你做所有這些事情。如果您可以澄清幾點(請參閱您的問題的評論),我們可以幫助您構建正確的排序方法調用。

– exchangeObjectAtIndex:withObjectAtIndex: 
– sortUsingDescriptors: 
– sortUsingComparator: 
– sortWithOptions:usingComparator: 
– sortUsingFunction:context: 
– sortUsingSelector: 
+0

感謝它的工作,但我寫在 - (IBAction)buttonclick:(id)發送者 所以它只調用一次我怎麼能改變它每次我試過[自buttonclick:(id)發送者];但它給錯誤,我怎麼能解決這個請幫助我 – MaheshBabu 2010-08-12 11:41:11

0

正如其他人所說的,你應該只是得到框架來爲你排序。它會比上面的代碼更高效。但是,如果你想知道你的排序算法有什麼問題,我認爲你錯過了一個外部的while循環來檢查在數組排序之前是否需要另一個通道。你試圖實施的是bubble sort,對吧?