数组排序

作者: 失忆的程序员 | 来源:发表于2024-06-12 14:24 被阅读0次


            NSMutableArray *numbers = [NSMutableArray arrayWithObjects:@3, @1, @4, @1, @5, @9, @2, @6, @5, @3, @5, nil];
            
            // 使用选项进行排序,这里我们不使用任何额外选项
            NSMutableArray *sortedNumbers = [numbers sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
                if ([obj1 integerValue] > [obj2 integerValue]) {
                    return NSOrderedDescending;
                } else if ([obj1 integerValue] < [obj2 integerValue]) {
                    return NSOrderedAscending;
                } else {
                    return NSOrderedSame;
                }
            }];
            

- (void)onononon
{
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@3,@2,@9,@1,@6,@7,@4,@5,@8,@5,nil];
    [self quickSortArray:array withLeftIndex:0 andRightIndex:(int)array.count - 1];
    NSLog(@"排序后的数组===%@",array);
    
}

 
//快速排序
- (void)quickSortArray:(NSMutableArray *)array withLeftIndex:(NSInteger)leftIndex andRightIndex:(NSInteger)rightIndex{
    if (leftIndex >= rightIndex) {//如果数组长度为0或1时返回
        return ;
    }
    NSInteger i = leftIndex;
    NSInteger j = rightIndex;
    //记录比较基准数
    NSInteger key = [array[i] integerValue];
    while (i < j) {
        /**** 首先从右边j开始查找比基准数小的值 ***/
        while (i < j && [array[j] integerValue] >= key) {//如果比基准数大,继续查找
            j--;
        }
        //如果比基准数小,则将查找到的小值调换到i的位置
        array[i] = array[j];
        /**** 当在右边查找到一个比基准数小的值时,就从i开始往后找比基准数大的值 ***/
        while (i < j && [array[i] integerValue] <= key) {//如果比基准数小,继续查找
            i++;
        }
        //如果比基准数大,则将查找到的大值调换到j的位置
        array[j] = array[i];
    }
    //将基准数放到正确位置
    array[i] = @(key);
    /**** 递归排序 ***/
    //排序基准数左边的
    [self quickSortArray:array withLeftIndex:leftIndex andRightIndex:i - 1];
    //排序基准数右边的
    [self quickSortArray:array withLeftIndex:i + 1 andRightIndex:rightIndex];
}


    NSArray * array = @[@"20",@"80",@"99",@"86",@"68",@"39",@"69",@"23",@"79",@"97"];
    
    float sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];
    
    float avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];
    
    float max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];
    
    float min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];   


相关文章

  • iOS 各种排序

    数组排序 数组中字典排序 数组中字典按照某个value排序 排序方法

  • Java 数组的排序、逆序

    数组的排序、逆序测试数据 数组选择排序 数组冒泡排序 数组逆序

  • java 数组和list排序

    数组排序 其中有数组排序和数组对象排序 数组一些数字排序则直接用Arrays.sort()加数组就可以。数组对象则...

  • 数组

    数组的遍历 数组是值类型 数组的排序 冒泡排序 多维数组

  • 2018-01-14

    php数组排序 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据...

  • PHP排序算法

    排序算法 冒泡排序(数组排序) 快速排序(数组排序) 参考 http://www.cnblogs.com/enia...

  • 算法记录

    快速排序 基本算法: 归并排序讲数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; 快速排序通过一...

  • 选择排序

    选择排序 调用选择排序 生成数组 打印输出排序数组

  • 按照数组中的字符串顺序给另一个数组排序

    数组1 数组2: 数组1按照数组2的顺序排序 sortedUserDicts就是排序后的数组

  • 排序问题

    数组排序 数组排序最简单了,直接Arrays.sort(a); a是待排序的数组 根据对象中的成员变量来排序 这个...

网友评论

    本文标题:数组排序

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