冒泡排序 OC 和swift

2016-06-30  本文已影响217人  vvkeep

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

OC版本:

import "ViewController.h"

@interface ViewController ()

@end

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

-(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
}

上一篇 下一篇

猜你喜欢

热点阅读