您的位置:

iOS数组排序详解

一、数组排序介绍

数组是在iOS开发中使用最为广泛的数据结构之一,而数组排序也是日常开发中十分常见的需求。数组排序能够让我们更加方便快捷地找到数组中的最大值、最小值、中位数等。实现数组排序,需要掌握基础排序算法,例如冒泡排序、快速排序、插入排序等。

二、排序方法

1. 冒泡排序

冒泡排序的基本思想是从数组的第一个元素开始与第二个元素进行比较,如果第一个元素大于第二个元素,则交换它们的位置,接着比较第二个元素和第三个元素,以此类推,直到排序完成。

NSArray *array = @[@5, @3, @8, @4, @1];
NSMutableArray *mArray = [NSMutableArray arrayWithArray:array];
for (int i=0; i [mArray[j+1] integerValue]) {
            [mArray exchangeObjectAtIndex:j withObjectAtIndex:j+1];
        }
    }
}

  

2. 快速排序

快速排序是一种高效的排序算法,其基本思想是选择一个基准元素,将数组按照基准元素分成两部分,一部分比基准元素小,一部分比基准元素大。然后分别对这两部分进行递归操作。

- (NSMutableArray *)quickSortWithArray:(NSMutableArray *)array {
    if (array.count <= 1) {
        return array;
    }
    NSMutableArray *leftArray = [NSMutableArray array];
    NSMutableArray *rightArray = [NSMutableArray array];
    NSInteger index = array.count/2;
    NSNumber *baseNum = [array objectAtIndex:index];
    [array removeObject:baseNum];
    for (NSNumber *num in array) {
        if ([num integerValue] < [baseNum integerValue]) {
            [leftArray addObject:num];
        } else {
            [rightArray addObject:num];
        }
    }
    NSMutableArray *resultArray = [NSMutableArray array];
    [resultArray addObjectsFromArray:[self quickSortWithArray:leftArray]];
    [resultArray addObject:baseNum];
    [resultArray addObjectsFromArray:[self quickSortWithArray:rightArray]];
    
    return resultArray;
}

3. 插入排序

插入排序的基本思想是将数组分成有序区和无序区,从无序区中取出元素插入到有序区中,插入时要保证有序区的元素仍旧有序。

NSArray *array = @[@5, @3, @8, @4, @1];
NSMutableArray *mArray = [NSMutableArray arrayWithArray:array];
for (int i=1; i0; j--) {
        if ([mArray[j] integerValue] < [mArray[j-1] integerValue]) {
            [mArray exchangeObjectAtIndex:j withObjectAtIndex:j-1];
        }
    }
}

  

三、总结

数组排序是iOS开发中的基本操作,它能够让我们更轻松地处理数据。常用的排序方法有冒泡排序、快速排序和插入排序,每种排序方法的适用场景不同,具体使用需要根据实际情况来选择。掌握这些排序方法,能够使我们的代码更加规范、高效。