冒泡排序 OC 和swift

用了oc 和swift 两个版本思想都是一些样的,同时结合了block 和闭包的概念。

OC版本:

import "ViewController.h"

@interface ViewController ()

@end

typedef BOOL (^Sort)(int x, int y);
@implementation ViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    //定义一个数组,注:数组里面要放对象类型
    NSArray *arr =@[@(1),@(4),@(3),@(9),@(7)];
    //转为可变数组
    NSMutableArray *arr1 = [NSMutableArray arrayWithArray:arr];
    [self bubbleSort:arr1 andSort:^BOOL(int x, int y) {
    return x<y;
    }];

    NSLog(@"%@",arr1);
    }

-(void)bubbleSort:(NSMutableArray *)arr andSort:(Sort)sort{
//外面的循环是控制一共循环多少次
for (int i = 0; i<arr.count-1; i++) {
//每一次循环 依次把大值放到后面
for (int j =0; j<arr.count-i-1; j++) {
NSNumber *i1 = arr[j];
NSNumber *i2 = arr[j+1];
//因为是对象类型,所以要转为int进行比较
if (sort(i1.intValue,i2.intValue)) {
NSNumber *temp =arr[j+1];
arr[j+1]= arr[j];
arr[j] = temp;
}
}
}
}

swift版本:
swift 版本 结合了闭包,这样就可以更加方便的定义是升序,还降序了。
func bubbleSort (inout data : [Int],function : (Int,Int) -> Bool) {

for var i = 0; i < data.count - 1; i++ {
 
    for var j = 0 ; j < data.count - 1 - i; j++ {
    
        if(function(data[j],data[j+1])) {
        
            let temp = data[j+1]
            data[j+1] = data[j]
            data[j] = temp             
        
        }
        
    }
    
}

}

var arr = [1, 8, 9, 63,3]

bubbleSort(&arr) { (a, b) -> Bool in
return a > b
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容