Bubble sort в NSMutableArray - PullRequest
       20

Bubble sort в NSMutableArray

2 голосов
/ 13 января 2012

вот мой вопрос: у меня есть plist с некоторыми объектами в нем.Эти объекты имеют некоторые keys, такие как «возраст», «пол», «человек» и т. Д. Если values из этих keys подходят для моего if statement, я добавляю этот объект в свой array.

Затем, когда мой массив, наконец, заполнен какими-то подходящими объектами, я хотел бы проверить еще один ключ каждого объекта - "imumCost ", тип которого NSNumber, а затем отсортировать объекты от самых дешевых до самых дорогих.объекты.И я не знаю, как это сделать.Не могли бы вы дать мне несколько идей, кода или решений, пожалуйста?

Вот мой код:

-(NSMutableArray*)creatingList:(NSMutableArray *)array
    {
        NSDictionary  *mainDictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"gifts" ofType:@"txt"]];

        //---enumerate through the dictionary objects inside the rootDictionary
        NSEnumerator *enumerator = [mainDictionary objectEnumerator];
        id returnValue;

        while ((returnValue = [enumerator nextObject])) 
        {
          // Big if statement comes

          if (([[returnValue valueForKey:@"sex"]isEqualToNumber:[NSNumber numberWithInt:sex]] ||
                [[returnValue valueForKey:@"sex"]isEqualToNumber:[NSNumber numberWithInt:2]]) && 
                [[returnValue valueForKey:@"person"]isEqualToString:person] &&
                age >= [[returnValue valueForKey:@"minAge"] intValue] &&
                age <= [[returnValue valueForKey:@"maxAge"] intValue])

            {  
                [array addObject:[returnValue valueForKey:@"name"]];                  
            }
        }

        for (int n = 0; n < [array count];n++)
        {
           //   WHAT CODE SHOULD BE HERE ?
        }

   return array;
}

Спасибо!

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Вы можете использовать встроенные NSArray методы сортировки, чтобы выполнить это, вместо того, чтобы свернуть свои собственные.

Подробнее здесь: http://www.cocoanetics.com/2009/03/nsarray-sorting-using-selectors/

1 голос
/ 29 июля 2016

Пожалуйста, найдите следующий код, это реализация Bubble sort с 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;
}
...