NSMutableArray中的冒泡排序

时间:2012-01-13 14:35:43

标签: objective-c nsmutablearray plist xcode4.2 bubble-sort

这是我的问题:我有一个plist,里面有一些对象。这些对象有一些keys类似“年龄”,“性别”,“人物”等。如果这些values的{​​{1}}适合我的keys,我会添加此项我的if statement中的对象。

然后,当我的数组终于满了一些合适的对象时,我想检查每个对象的另一个键 - “minimumCost”,其类型为array,然后将对象从最便宜的对象分类到最昂贵的对象。我不知道该怎么做。你能给我一些想法,代码或解决方案吗?

这是我的代码:

NSNumber

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用内置的NSArray排序方法来完成此操作,而不是自己滚动。

在此处查看更多内容:http://www.cocoanetics.com/2009/03/nsarray-sorting-using-selectors/

答案 1 :(得分:1)

请找到以下代码,这是使用Objective-c实现冒泡排序:

- (void)viewDidLoad {
   [super viewDidLoad];

    NSMutableArray *unsortedArray = [[NSMutableArray alloc]initWithObjects:@"4",@"7",@"3",@"2",@"10",@"8",nil];
    [self bubbleSort:unsortedArray];
  }

<强>实施

- (NSArray *)bubbleSort:(NSMutableArray *)sortedArray
{
   long count = sortedArray.count;

   bool swapped = YES;

   while (swapped)
   {
   swapped = NO;

      for (int i = 1; i < count; i++)
      {
          int x = [sortedArray[i-1] intValue];
          int y = [sortedArray[i] intValue];

          if (x > y)
          {
               [sortedArray exchangeObjectAtIndex:(i-1) withObjectAtIndex:i];
               swapped = YES;
          }
      }
   }
   return sortedArray;
}

答案 2 :(得分:0)

这是对 NSMutableArray 的整数进行未优化冒泡排序的最简单方法。

  NSMutableArray <NSNumber *>*foo = [NSMutableArray arrayWithArray:@[@9,@8,@7,@6,@5,@4]];
  for (int i = 0; i < [foo count]; i++) {
    for (int j = 0; j < [foo count] - 1; j++) {
      if (foo[j + 1].integerValue < foo[j].integerValue) {
        NSInteger a = foo[j].integerValue;
        foo[j] = foo[j + 1];
        foo[j + 1] = @(a);
      }
    }
  }