IOS常見(jiàn)算法

常見(jiàn)算法:

快速排序:
//快速排序
- (void)quckSort:(NSMutableArray *)arr leftIndex:(NSInteger)left rightIndex:(NSInteger)right{
    if (left >= right) {
        return;
    }
    NSInteger leftIndex = left;
    NSInteger rightIndex = right;
    NSInteger key = [arr[leftIndex] integerValue];
    
    while (leftIndex < rightIndex) {
        //首先從右邊開(kāi)始找比key小的值
        while (leftIndex < rightIndex && [arr[rightIndex] integerValue] >= key) {//比key大則繼續(xù)尋找
            rightIndex --;
        }
        //找到后,替換key的位置
        arr[leftIndex] = arr[rightIndex];
        //從左到右找比key大的值
        while (leftIndex < rightIndex && [arr[leftIndex] integerValue] < key) {
            leftIndex ++;
        }
        //找到后替換位置
        arr[rightIndex] = arr[leftIndex];
    }
    //退出循環(huán)代表left = right
    arr[leftIndex] = @(key);
    //遞歸左邊
    [self quckSort:arr leftIndex:left rightIndex:leftIndex-1];
    //遞歸右邊
    [self quckSort:arr leftIndex:leftIndex + 1 rightIndex:right];
}
選擇排序:
-(void)selctSort:(NSMutableArray *)array{
    for (NSInteger i = 0; i < array.count; i++) {
        for (NSInteger j = i+1; j<array.count; j++) {
            if ([array[j] integerValue] < [array[i] integerValue]) {
                NSInteger temp = [array[i] integerValue];
                array[i] = @([array[j] integerValue]);
                array[j] = @(temp);
            }
        }
    }
}
冒泡排序:
-(void)maopaoSort:(NSMutableArray *)array{
    for (NSInteger i = 0; i < array.count; i++) {
        for (NSInteger j = 0; j<array.count-i-1; j++) {
            if ([array[j] integerValue] < [array[j+1] integerValue]) {
                NSInteger temp = [array[j] integerValue];
                array[j] = @([array[j+1] integerValue]);
                array[j+1] = @(temp);
            }
        }
    }
}
測(cè)試代碼:
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //快速排序
    NSMutableArray *arr = [NSMutableArray arrayWithObjects:@(55), @(23),@(93),@(23),@(4),@(56),@(1),@(34),@(69), nil];
    [self quckSort:arr leftIndex:0 rightIndex:arr.count-1];
     NSLog(@"%@",arr);
    NSMutableArray *arr2 = [NSMutableArray arrayWithObjects:@(55), @(23),@(93),@(23),@(4),@(56),@(1),@(34),@(69), nil];
    //選擇排序
    [self selctSort:arr2];
    NSLog(@"%@",arr2);
    //冒泡-重復(fù)的走訪要排序的數(shù)列,一次兩個(gè),順序不對(duì)則交換順序,
    NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@(55), @(23),@(93),@(23),@(4),@(56),@(1),@(34),@(69), nil];
    [self maopaoSort:arr3];
    NSLog(@"%@",arr3);
}
?著作權(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)容