如何解决排序问题

时间:2010-08-12 10:20:01

标签: iphone objective-c

嗨,我是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张图像。这有什么不对?如果有任何错误,请发布正确的代码。我需要的是将第一张图像替换为最后一张图像和第二张图像。

2 个答案:

答案 0 :(得分:1)

解决您的问题:不要自己实施排序,让框架为您完成。 NSMutableArray有许多排序方法可以为您完成所有这些工作。如果您可以澄清几点(请参阅您的问题的评论),我们可以帮助您构建正确的排序方法调用。

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

答案 1 :(得分:0)

正如其他人所提到的,你应该让框架为你做排序。它比上面的代码更有效率。

但是,如果您想知道排序算法有什么问题,我认为您缺少一个外部while循环来检查在排序数组之前是否需要另一个传递。您正试图实施bubble sort,对吗?