美文网首页
OC版本常用的排序

OC版本常用的排序

作者: Queen_BJ | 来源:发表于2020-09-17 16:15 被阅读0次
冒泡排序算法

思路:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
针对所有的元素重复以上的步骤,直到没有任何一对数字需要比较。

NSMutableArray *array = [[NSMutableArray alloc]init];
    NSArray *result = @[@"5",@"3",@"56",@"45",@"6",@"7",@"2",@"10"];
    [array addObjectsFromArray:result];
    
    for (int i = 0; i<array.count - 1; i++) {
        // n-1-i 表示每轮对应交换完后的数字不用再比了
        for (int j = 0; j<array.count-1-i; j++) {
            NSInteger left = [array[j] integerValue];
            NSInteger right = [array[j+1] integerValue];
            if (left<right) { 从大到小      >是从小到大
                [array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
            }
        }
    }
    NSLog(@"%@",array);

 (
    56,
    45,
    10,
    7,
    6,
    5,
    3,
    2
)
快速排序

思路:
第一个数为基准数比较大小,右边找小的,左边找大的,这两个数进行交换,依次类推,直到相遇,分成两部分,继续以这个方法比较

NSArray * array1 = @[@2,@3,@7,@5,@9,@4,@6,@1,@8];
    NSMutableArray * data  = [NSMutableArray arrayWithArray:array1];
    
    [self quickSortDataArray:data withStartIndex:0 andEndIndex:data.count - 1];
    
    NSLog(@"=======%@",data);
选择排序
NSArray *numArr = @[@(10), @(1), @(7), @(2), @(8)];
    NSMutableArray *oldArr = [NSMutableArray arrayWithArray:numArr];
    for (NSInteger x = 0; x < oldArr.count; x++) {
        for (NSInteger y = x + 1; y < oldArr.count; y++) {
            if ([oldArr[y] integerValue] < [oldArr[x] integerValue]) {
                NSInteger temp = [oldArr[y] integerValue];
                oldArr[y] = oldArr[x];
                oldArr[x] = @(temp);
            }
        }
    }

原理:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。


选择排序

各种排序可参考网站

相关文章

网友评论

      本文标题:OC版本常用的排序

      本文链接:https://www.haomeiwen.com/subject/vqolyktx.html