iOS 冒泡排序
// 是按从小到大的顺序排列的
// 首先有一个数组
NSMutableArray *array = @[].mutableCopy;
// 需要一组数据
for (int i = 0; i < 100; i++) {
int num = arc4random()%100;
[array addObject:@(num)];
}
// 用set是因为他的特性就是保证数据唯一,不会有重复的数据
// 用set也就省下了去重的代码
NSMutableSet *set = [NSMutableSet set];
for (NSNumber *num in array) {
[set addObject:num];
}
// set数组里面得到去重之后的数据,就要把之前得到的数据清空
[array removeAllObjects];
// 之所以再写一个for循环是因为,set里面的数据是无序的,没有下标,所以只能把set里面的数据放到有序的数组里面
for (NSNumber *num in set) {
[array addObject:num];
}
// 接着就是进行排序
// t是用来记录需要替换的值,下面会用到
NSInteger t = 0;
// 这里的思想就是把每一个数字取出来,与后面的比较,如果前面的值比较大,就把这两个值作交换。
// 如果遇到后面的值比前面的值大,就不再进行交换,而是用下一个值来进行比较交换,知道数组当中的最后位置
// 等到最外层的循环结束,排序就结束了
for (NSInteger i = 0; i < array.count - 1; i++) {
// 这里之所以多减去一个i,是因为最小的值已经在最后面了,所以也就不需要再去比较
for (NSInteger j = 0; j < array.count - 1 - i; j++) {
// 这里的大于号如果改成小于号,就是从大到小排序
if (array[j] > array[j+1]) {
t = [array[j] integerValue];
array[j] = array[j+1];
array[j+1] = @(t);
}
}
}
// 最后输出结果
NSString *str = [NSString stringWithFormat:@""];
str = [array componentsJoinedByString:@","];
NSLog(@"%@",str);
结果:
611511952572_.pic.jpg
网友评论