排序

作者: Leon_Jiang | 来源:发表于2018-04-14 15:59 被阅读0次

//1.使用sortedArrayUsingSelector
//也是最简单的排序方式
//数组是按照你存入元素的顺序存储的

    NSArray * array = @[@"b",@"d",@"a",@"z"];
    NSLog(@"排序前 array %@",array);
    
    array = [array sortedArrayUsingSelector:@selector(compare:)];

// NSArray * array1 = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序后 array %@",array);

    //2.使用block方式排序
    NSArray * array2 = @[@"z",@"4",@"b",@"3",@"x"];
    
    NSLog(@"array2 排序前 %@",array2);
    array2 = [array2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        
        /*
        NSComparisonResult retuslt = [obj1 compare:obj2];
        
        return retuslt;
         */
        //obj1 compare obj2 就是正序排序

// return [obj1 compare:obj2];
//obj2 compare obj1 就是倒序排序
return [obj2 compare:obj1];

    }];
    NSLog(@"array2 排序后 %@",array2);
    
   
    Person * p1 = [[Person alloc] initWithName:@"xiaozhe" andAge:20 andYear:@"1990"];
    Person * p2 = [[Person alloc] initWithName:@"alex" andAge:18 andYear:@"2990"];
    Person * p3 = [[Person alloc] initWithName:@"merry" andAge:25 andYear:@"1890"];
    
    NSArray * array3 = @[p1,p2,p3];
    NSLog(@"array3 排序前 %@",array3);
    
    //3.使用 给数组排序
    //如果你向给你自己定义的对象排序,必须根据某一个属性来排序,
    //sortDescriptorWithKey 参数要的就是你对象中,要依据哪个属性来排序,你就把哪个属性的名字当成key传入
    //ascending YES表示正序 NO表示倒叙
    NSSortDescriptor * d1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
    NSSortDescriptor * d2 = [NSSortDescriptor sortDescriptorWithKey:@"year" ascending:NO];
    
    //如果你要使用多个属性进行排序,默认在前面的NSSortDescriptor优先级比较高
    NSArray * descripts = @[d2,d1];
    
    array3 = [array3 sortedArrayUsingDescriptors:descripts];
    
    NSLog(@"array 3 排序后  %@",array3);
    
    
    //4.

    NSArray * array4 = @[p1,p2,p3];
    NSLog(@"array4 排序前 %@",array4);
    array4 = [array4 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        
        Person * p1 = obj1;
        Person * p2 = obj2;
        
        //year
        return [p1.year compare:p2.year];
        
        
    }];
    NSLog(@"array4 排序后 %@",array4);
}

相关文章

  • 【恋上数据结构与算法二】(一)排序(Sorting)

    排序方法 冒泡排序 选择排序 堆排序 插入排序 归并排序 快速排序 希尔排序 计数排序 基数排序 桶排序 初识排序...

  • 排序-冒泡排序

    排序系列传递门 排序—选择排序排序—快速排序排序—插入排序排序-希尔排序(待完善)排序—归并排序(待完善)排序—基...

  • 排序

    冒泡排序: 冒泡排序 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: ...

  • Java | 10种排序算法

    冒泡排序 选择排序 插入排序 希尔排序 计数排序 基数排序 堆排序 归并排序 快速排序 桶排序

  • 常见的排序

    冒泡排序: 选择排序: 插入排序: 快速排序: 希尔排序: 归并排序: 堆排序: 计数排序: 桶排序: 基数排序:

  • 002--20200409刷题

    冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序

  • 排序

    排序 符号:Θ 插入排序 选择排序 堆排序 归并排序 冒泡排序 快速排序 桶排序 基数排序 计数排序 插入排序 插...

  • 排序 -- 选择/插入

    聊聊排序吧 冒泡排序 选择排序 插入排序 快速排序 归并排序 计数排序 桶排序 堆排序 本篇 选择排序与插入排序 ...

  • 前端基础整理 | 算法基础

    排序算法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序

  • Java 常见的 8 种排序算法(内排序)

    排序分类 内部排序 插入排序:直接插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:直接选择排序、堆排序...

网友评论

      本文标题:排序

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