ios - 算法

  • 一:斐波那契数列

oc写法:

- (NSArray *)fibonacci:(int)n

{
    if (n<2) {
        return @[];
    }
    
    NSMutableArray *muArr = @[@(0),@(1)].mutableCopy;
    
    for (int i = 2; i < n; i++) {
        
        int fib1 = [muArr[i - 2] intValue];
        int fib2 = [muArr[i - 1] intValue];
        
        if (fib1 + fib2 > UINT8_MAX) {
            break;
        }
        [muArr addObject:@(fib1 + fib2)];
    }
    return muArr;
}

swift写法:

func fibonacci(_ n: Int) -> NSArray {
        var arr:[Int] = [0,1]
        for i in 2..<n {
            let fib1 = arr[i - 2]
            let fib2 = arr[i - 1]
            if fib1 + fib2 > UINT8_MAX {
                break
            }
            arr.append(fib1 + fib2)
        }
        return arr as NSArray
    }
  • 二:快速排序

oc写法:

NSMutableArray *muarr = @[@1,@2,@9,@10,@3].mutableCopy;

- (void)quickSortArr:(NSMutableArray *)muArr leftIndex:(NSInteger)left rightIndex:(NSInteger)right{
    
    if (left > right) {
        return;
    }
    
    NSInteger i = left;
    NSInteger j = right;
    NSInteger key = [muArr[left] intValue];
    
    while (i < j) {
        
        while (i < j && [muArr[j] intValue] >= key) {
            j--;
        }
        muArr[i] = muArr[j];
        
        while (i < j && [muArr[i] intValue] <= key) {
            i++;
        }
        muArr[j] = muArr[i];
        
    }
    
    muArr[i] = @(key);
    [self quickSortArr:muArr leftIndex:left rightIndex: i - 1];
    [self quickSortArr:muArr leftIndex: i + 1 rightIndex:right];
}

swift写法:

private func quickSort(arr: inout Array<Int>, leftIndex: NSInteger, rightIndex: NSInteger){
        if leftIndex > rightIndex{
            return
        }
        
        var i = leftIndex
        var j = rightIndex
        let key = arr[leftIndex]
        
        while i < j {
            while (i < j && arr[j] >= key) {
                j -= 1
            }
            arr[i] = arr[j]
            while (i < j && arr[i] <= key) {
                i += 1
            }
            arr[j] = arr[i]
        }
        arr[i] = key
    self.quickSort(arr: &arr, leftIndex: leftIndex, rightIndex: i - 1)
    self.quickSort(arr: &arr, leftIndex: i + 1, rightIndex: rightIndex)
    }
  • 三:字符串反转

oc写法

char ch[] = "hello word";
    [self charReverse:ch];
    printf("%s",ch);


- (void)charReverse:(char*) cha{
    
    //指向第一个字符
    char* begin = cha;
    //指向最后一个字符
    char* end = cha + strlen(cha) - 1;
    while (begin < end){
        //交换,移动指针
        char temp = *begin;
        *(begin++) = *end;
        *(end--) = temp;
    }
}

swift 写法

let str = self.charReverse("hello word")
        print(str)


func charReverse(_ str: String) -> String {
        var chars = str.cString(using: String.Encoding.utf8)!
        var begin = 0
        var end = str.count - 1
        
        while begin < end {
            let char = chars[begin]
            chars[begin] = chars[end]
            chars[end] = char
            begin += 1
            end -= 1
        }
        return String.init(utf8String: chars)!
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值