陣列的排序

weixin_34087301發表於2018-09-19

系統提供的排序方法,我覺得應該是快速排序方法的封裝

  • OC
NSArray *array = @[@(3),@(4),@(7),@(1),@(6),@(5)];

// 對陣列進行排序
NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2)                  
{    
    NSLog(@"%@~%@",obj1,obj2);//3~4 2~1 3~1 3~2
    
    return [obj1 compare:obj2];  // 升序
    // return [obj2 compare:obj1];  // 降序
}];
  • swift
let array = [3, 4, 7, 1, 6, 5]
let result = array.sorted(by: <)    // 升序
// let result = array.sorted(by: >)    // 降序

還有其他排序的方法,可參考文章:iOS 陣列排序問題

  • 反轉陣列
    • OC
    - (NSArray *)qs_reverseArray
    {
        NSInteger mid = self.count / 2;
     
        NSMutableArray *tempArray = [[NSMutableArray alloc] initWithArray:self];
        for (int i = 0; i < mid; i++) {
            [tempArray exchangeObjectAtIndex:i withObjectAtIndex:self.count - (i + 1)];
        }
     
        return [[NSArray alloc] initWithArray:tempArray];
    }
    
    • swift
    let array = [3, 4, 7, 1, 6, 5]
    let result = array.reversed()
    

參考文章:iOS 陣列的排序(升序、降序、亂序)

相關文章