冒泡排序、選擇排序和二分法查找

冒泡排序

- (void)bubbleSort {
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"98",@"75",@"89",@"53",@"67",@"92"]];
    for (int i = 0; i < array.count - 1; i++) {
        for (int j = 0; j < array.count-1-i; j++) {
            //原理:從第1個(gè)數(shù)開(kāi)始起,與后面的數(shù)字相互比較,滿足條件的向后位移(值交換),若不滿足條件,拿到大一點(diǎn)的數(shù)值繼續(xù)向后比較
            if ([array[j] intValue] > [array[j+1] intValue]) {
                // 開(kāi)始交換數(shù)據(jù)
                NSString *temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
        NSLog(@"%@",array);
    }
}

選擇排序

// 選擇排序
- (void)selectSort {
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"98",@"75",@"89",@"53",@"67",@"92"]];
    for (int i = 0; i < array.count-1; i++) {
        // 原理:從i后面第i+1個(gè)數(shù)起,跟array[i]相互比較,滿足條件即交換值
        for (int j = i+1; j < array.count; j++) {
            // if里面的 '>' '<' 條件決定了排序的 升降
            if ([array[i] intValue] > [array[j] intValue]) {
                NSString *temp = array[j];
                array[j] = array[i];
                array[i] = temp;
            }
        }
        NSLog(@"%@",array);
    }
}

二分法查找

概念

1.使用二分法好處: 可以加快尋找的效率。
2.使用二分法特點(diǎn): 二分法查找有序數(shù)組元素。
3.使用二分法思路:它是通過(guò)與數(shù)組的中間值進(jìn)行比較的。


/**
1.我們要查找的值為X
2.數(shù)組是從小到大排序的
**
1.先取出數(shù)組中間的元素
2.把中間元素和X進(jìn)行比較,如果中間元素大于X,那么X就位于第一個(gè)元素,和中間元素之間。反之,如果中間元素小于X,那么X就位于中間元素和最大值之間。
3.這樣進(jìn)行比較之后,我們的查找范圍就小了一半。
 */
#pragma mark - 實(shí)現(xiàn)代碼:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSArray *arr = @[@1,@20,@30,@45,@50,@55,@60,@66,@70];
    NSInteger x = 70,min,max,mid;
    min = 0;
    max = arr.count - 1;
    mid = (min + max) / 2;
    
    for (int i = 0; i < arr.count; i++)
    {
        if ([arr[mid] integerValue] == x)
        {
            NSLog(@"查找次數(shù)為--->%d次",i);
            NSLog(@"尋找值位置為--->%ld",mid);
            return;
        }else if ([arr[mid] integerValue] > x)
        {
            max = mid - 1;
            mid = (min + max) / 2;
        }else if ([arr[mid] integerValue] < x)
        {
            min = mid + 1;
            mid = (min + max) / 2;
        }
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容