亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

iOS總結筆記 快速排序 、二分查找的OC實現

標簽:
iOS 算法
//二分查找   默认查找有序数组
- (NSInteger)searchTarget:(NSInteger)target fromArr:(NSArray *)arr
{
    if (arr.count < 1) {
        return -1;
    }
    NSInteger start,mid,end;
    start = 0;
    mid = 0 ;
    end = arr.count-1;
    while (start < end-1) {//就剩两个数的时候  start = end - 1;这个条件跳出
        mid = start + (end - start)/2;
        if ([arr[mid] integerValue] > target) {
            end = mid;
        }else{
            start = mid;
        }
    }
    if (target == [arr[start] integerValue]) {
        return start;
    }
    if (target == [arr[end] integerValue]) {
        return end;
    }
    return -1;
}
//快速排序
- (void)sortArr:(NSMutableArray *)arr left:(NSInteger)left right:(NSInteger)right
{//@[@3,@4,@1,@6,@5,@2,@9,@7,@8]
    if (left >= right) {//如果数组长度为0或1时返回  递归调用的必备跳出
        return ;
    }
    NSInteger i,j,base;
    i = left;
    j = right;
    base = [arr[left] integerValue];
    while(i < j){//循环1️⃣
        while([arr[j] integerValue] >= base&&i<j){
            j--;
        }
        arr[i] = arr[j];
        while ([arr[i] integerValue] <= base&&i<j) {
            i++;
        }
        arr[j] = arr[i];
      
    }
    arr[i] = @(base);
    [self sortArr:arr left:left right:i-1];
    [self sortArr:arr left:i+1 right:right];
}

  //快速排序
    NSMutableArray *array = @[@3,@4,@1,@6,@5,@2,@9,@7,@8].mutableCopy;
    [self sortArr:array left:0 right:array.count-1];

    //二分查找
    NSArray *arr = @[@1,@3,@4,@6,@7,@8,@9];
    NSArray *arr0 = @[@2,@3,@5,@7,@8,@9];
    NSArray *arr1 = @[@2,@3,@7,@7,@8,@9];

    NSInteger i = [self searchTarget:7 fromArr:arr];
    NSInteger j = [self searchTarget:7 fromArr:arr0];
    NSInteger k = [self searchTarget:7 fromArr:arr1];
    NSLog(@"---------%ld\n ===========%ld \n +++++++++++%ld",i,j,k);
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
32
獲贊與收藏
323

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消