使用块代码实现数组排序和乱序

 1 #import "HMViewController.h"
 2
 3 @interface HMViewController ()
 4
 5 @end
 6
 7 @implementation HMViewController
 8
 9 - (void)viewDidLoad
10 {
11     [super viewDidLoad];
12
13     // 块代码
14     NSArray *array = @[@(1), @(2), @(3), @(4), @(5)];
15
16     // 排序
17     array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {
18
19         // 乱序=>一会升序,一会降序
20         // 随机
21 //        arc4random_uniform(10) => 0~9之间的随机数
22         int seed = arc4random_uniform(2);
23         if (seed) {
24             return [num1 compare:num2];
25         } else {
26             return [num2 compare:num1];
27         }
28     }];
29
30     NSLog(@"%@", array);
31 }
32
33 - (void)sortWith:(NSArray *)array
34 {
35     // 排序
36     array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {
37
38         /**
39          1 4 5 2
40          4 1 5 2
41          4 1 5 2
42          5 4 1 2
43          5 4 1 2
44          5 4 2 1
45          */
46         NSLog(@"%@ %@", num1, num2);
47
48         // 升序
49         //        return [num1 compare:num2];
50         // 降序
51         return [num2 compare:num1];
52     }];
53
54     NSLog(@"%@", array);
55 }
56
57 - (void)arrayWith:(NSArray *)array
58 {
59     int i = 0;
60     for (NSNumber *num in array) {
61         NSLog(@"%@", num);
62
63         if (i == 1) {
64             break;
65         }
66         i++;
67     }
68
69     // 参数:对象,索引,是否中断
70     // 数组的块方法遍历的效率比for in高
71     [array enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
72         NSLog(@"%@", obj);
73
74         // idx == 1 退出循环
75         if (idx == 1) {
76             *stop = YES;
77         }
78     }];
79 }
80
81 @end
时间: 2024-12-14 18:44:01

使用块代码实现数组排序和乱序的相关文章

Chrome谷歌浏览器中js代码Array.sort排序的bug乱序解决办法

[现象] 代码如下: var list = [{ n: "a", v: 1 }, { n: "b", v: 1 }, { n: "c", v: 1 }, { n: "d", v: 1 }, { n: "e", v: 1 }, { n: "f", v: 1 }, { n: "g", v: 1 }, { n: "h", v: 1 }, { n: &qu

数组排序、去重、乱序

冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从从Z到A)错误就把他们交换过来.走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成 冒泡排序: function bubbleSort(arr){ var len=arr.length,j; var temp; while(len>1){ for(j=0;j<len-1;j++){ if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=a

php 二维数组索引乱序 shuffle() 函数;

在实际开发中有一个打乱数组排序的案例 案例代码如下 public function index(){ if(IS_POST){ #获取卖单列表 $buy_list=M('buy')->where(['status'=>1])->field('num')->select(); #获取卖单列表 $sell_list=M('sell')->where(['status'=>1])->field('num')->select(); foreach($buy_list

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案.r2007给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次: while read i;do echo "$i $RANDOM&qu

解析linux下磁盘乱序的问题

大家在使用linux过程当中肯定遇到过磁盘乱序的问题.一般情况下引起磁盘乱序有几种可能,比如磁盘是通过raid卡连接到服务器的,raid卡电池没电来,这时候如果服务器掉电的情况下可能会引起磁盘乱序.再就是比如新的服务器,但raid驱动是比较老的版本,一旦重启也经常会有乱序的可能.再就是服务器磁盘较多,sata/ssd存在混用的情况下也会有乱序的可能. 针对这种乱序的情况应该如何解决呢?这里我总结了一种比较好的结局方法.下面这个脚本的目的是通过udevinfo(centos5)或者udevadm(

Android ListView异步加载图片乱序问题,原因分析及解决方案

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼.比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者都曾经遇到过,就是异步加载图片会出现错位乱序的情况.遇到这个问题时,不

无限层级且乱序的树形结构数据的整理,利用HashMap减少遍历次数

我们在展示一个机构树的时候,常常会遇到这样的一个问题,查询数据的时候,是从下往上查的,但展示数据的时候,又要从下往上展示. 这时候就要把查询到的数据进行整理从而得到我们想要的结构. 举个例子. ID PARENT_ID SOME_ATTRIBUTE_ID 2001 0   6292 6120 57010 6120 6115   6121 6115   6156 6121 56874 6115 2001   这是根据需求查询出的sql数据,但是它是无序的,所以很让人头疼,不知如何去处理,示意图是这

iOS之数组的排序(升序、降序及乱序)

#pragma mark -- 数组排序方法(升序) - (void)arraySortASC{ //数组排序 //定义一个数字数组 NSArray *array = @[@(3),@(4),@(2),@(1)]; //对数组进行排序 NSArray *result = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) { NSLog(@"%@~%@",

DS之顺序表实现乱序输入顺序输出

顺序表的实例有很多,在学其他的编程语言时,肯定都学过要求输入一串乱序的数字,要求进行排序,实现升序或降序输出.今天就来用顺序表实现乱序输入,顺序输出(升序). 实现上述的功能需要用到的顺序表的基本操作有0基本操作前的准备,1初始化顺序表,6向顺序表插入数据元素. 自己只需写一个排序的函数,排序函数的代码为: <span style="font-size:18px;">//排序函数 void paixu(SqList &L) { for(int i=0;i<L.