如何在 Objective C 中使用 for 循环对 NSNumber 的可变数组进行排序?

Cha*_*har -1 sorting loops objective-c ios

我试过这个,但我没有成功。任何人都可以解决这个问题吗?

 NSNumber *num1= [NSNumber numberWithInt:5];
    NSNumber *num2= [NSNumber numberWithInt:3];
    NSNumber *num3= [NSNumber numberWithInt:7];
    NSNumber *num4= [NSNumber numberWithInt:9];
    NSNumber *num5= [NSNumber numberWithInt:2];



    NSMutableArray *array =[NSMutableArray arrayWithObjects:num1,num2,num3,num4,num5, nil];

    int numLength = [array count];

    int tempValue;

    for (int i = 0; i < numLength; i++)
    {
        for(int j = 0; j < numLength; j++)
        {
            NSNumber *temp=[array objectAtIndex:i];
            int first =[temp integerValue];

            NSNumber *temp1=[array objectAtIndex:j+1];
            int second =[temp1 integerValue];

            if(first > second)

            {
                tempValue = second;

                [array replaceObjectAtIndex:j+1 withObject:temp];
                [array replaceObjectAtIndex:i withObject:temp1];

            }
        }
    }

    NSLog(@"Array is %@", array);
Run Code Online (Sandbox Code Playgroud)

此代码在 ViewDidLoad...

谢谢

hol*_*lex 5

试试这个,它确实很好用:

NSMutableArray *_array = [NSMutableArray array];
for (int i = 0; i < 5; i++) { [_array addObject:@(arc4random()%10)]; }

NSLog(@"random: %@", _array);

for (int i = 0; i < _array.count; i++) {
    for(int j = i; j < _array.count; j++) {
        if (i != j) {
            NSInteger _first = [[_array objectAtIndex:i] integerValue];
            NSInteger _second = [[_array objectAtIndex:j] integerValue];
            if (_second < _first) {
                [_array exchangeObjectAtIndex:i withObjectAtIndex:j];
            }
        }
    }
}

NSLog(@"sorted : %@", _array);
Run Code Online (Sandbox Code Playgroud)

注意:这种对数组元素进行排序的方式非常低效,建议仅用于教育目的。