基本算法

排序

冒泡排序

  1. 比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。
  2. 對(duì)每一對(duì)相鄰元素做同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。
  3. 針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
  4. 持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
/*
 冒泡排序
 1先是第一個(gè)數(shù)和第二個(gè)數(shù)進(jìn)行比較
 1.1 如果第一個(gè)數(shù)小于第二個(gè)數(shù) ,則用第二個(gè)數(shù)與第三個(gè)數(shù)進(jìn)行比較
 1.2 如果第一個(gè)數(shù)大于第二個(gè)數(shù),則進(jìn)行位置交換,接著用第二個(gè)數(shù)(原來的第一個(gè)數(shù))與第三個(gè)數(shù)進(jìn)行比較.....直到i-1和i進(jìn)行比較
 1.3 這樣下來 一輪比較后,最大的數(shù)就會(huì)在最后
 
 2 重復(fù)1步驟 但是不同的是, 第二輪比較,相對(duì)于第一輪比較,最后的比較是i-2和i-1進(jìn)行比較,原因 1.3
*/
- (void)maopao{
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"17",@"28",@"15",@"16",@"24", nil];
    for (NSUInteger i = 0; i < array.count-1; i++) {//0、1、2、3
        for (NSInteger j = 0; j < array.count-1-i; j++) {//i=0 j=0、1、2、3 。i=1 j = 0、1、2。i=2 j = 0、1、。i=3 j = 0
            NSString *obj = array[j];//17-28
            NSString *obj1 = array[j+1];
            NSLog(@"%ld=====%ld",i,j);
           if (obj.integerValue > obj1.integerValue) {
               NSInteger temp = [obj integerValue];
               array[j] = array[j+1];
               array[j+1] = [NSString stringWithFormat:@"%ld",temp];
           }
        }
        NSLog(@"%@",array);
    }
}

選擇排序

選擇排序的基本思想是,基于直接選擇排序和堆排序這兩種基本的簡(jiǎn)單排序方法。首先從第1個(gè)位置開始對(duì)全部元素進(jìn)行選擇,選出全部元素中最小的給該位置,再對(duì)第2個(gè)位置進(jìn)行選擇,在剩余元素中選擇最小的給該位置即可

/*
  選擇排序
  1先是第一個(gè)數(shù)A依次順序比較, 如果有數(shù)B小于它,就將A和B的位置對(duì)換。接著用對(duì)換后的數(shù)B繼續(xù)進(jìn)行比較
  2再用第二個(gè)數(shù)進(jìn)行1操作
  3用第三個(gè)數(shù)。。。。。第i個(gè)數(shù)
*/
- (void)xuanze{
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"17",@"28",@"15",@"16",@"24", nil];
    for (NSUInteger i = 0; i < array.count-1; i++) {//0、1、2、3
        for (NSInteger j = i+1; j < array.count; j++) {//i=0 j=1234 。i=1 j =234。i=2 j = 23、。i=3 j = 3
            NSString *obj = array[i];//17-28
            NSString *obj1 = array[j];
            NSLog(@"%ld=====%ld",i,j);
           if (obj.integerValue > obj1.integerValue) {
               NSInteger temp = [obj integerValue];
               array[i] = array[j];
               array[j] = [NSString stringWithFormat:@"%ld",temp];
           }
        }
        NSLog(@"%@",array);
    }
}

快速排序

1)設(shè)置兩個(gè)變量i、j,排序開始的時(shí)候:i=0,j=N-1;
2)以第一個(gè)數(shù)組元素作為關(guān)鍵數(shù)據(jù),賦值給key,即key=A[0];
3)從j開始向前搜索,即由后開始向前搜索(j--),找到第一個(gè)小于key的值A(chǔ)[j],將A[j]和A[i]的值交換;
4)從i開始向后搜索,即由前開始向后搜索(i++),找到第一個(gè)大于key的A[i],將A[i]和A[j]的值交換;
5)重復(fù)第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中A[j]不小于key,4中A[i]不大于key的時(shí)候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進(jìn)行交換的時(shí)候i, j指針位置不變。另外,i==j這一過程一定正好是i+或j-完成的時(shí)候,此時(shí)令循環(huán)結(jié)束)。
假設(shè)一開始序列{xi}是:5,3,7,6,4,1,0,2,9,10,8。
此時(shí),ref=5,i=1,j=11,從后往前找,第一個(gè)比5小的數(shù)是x8=2,因此序列為:2,3,7,6,4,1,0,5,9,10,8。此時(shí)i=1,j=8,從前往后找,第一個(gè)比5大的數(shù)是x3=7,因此序列為:2,3,5,6,4,1,0,7,9,10,8。此時(shí),i=3,j=8,從第8位往前找,第一個(gè)比5小的數(shù)是x7=0,因此:2,3,0,6,4,1,5,7,9,10,8。此時(shí),i=3,j=7,從第3位往后找,第一個(gè)比5大的數(shù)是x4=6,因此:2,3,0,5,4,1,6,7,9,10,8。此時(shí),i=4,j=7,從第7位往前找,第一個(gè)比5小的數(shù)是x6=1,因此:2,3,0,1,4,5,6,7,9,10,8。此時(shí),i=4,j=6,從第4位往后找,直到第6位才有比5大的數(shù),這時(shí),i=j=6,ref成為一條分界線,它之前的數(shù)都比它小,之后的數(shù)都比它大,對(duì)于前后兩部分?jǐn)?shù),可以采用同樣的方法來排序 原文

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 面試中常用的幾個(gè)基本算法整理記錄(二) 無意中看到了面試中的 10 大排序算法總結(jié)原文地址記錄一下,方便查找。 查...
    190CM閱讀 1,877評(píng)論 1 12
  • 本文排序全部基于升序,為了方便閱讀全部基于C,代碼將全部部署到github上。(為方便各位看官調(diào)試,代碼中的打印數(shù)...
    _onePiece閱讀 521評(píng)論 0 1
  • 快速排序算法是對(duì)冒泡算法的改進(jìn)。所以我們首先來簡(jiǎn)單的談?wù)劽芭菟惴ā?1.冒泡算法 冒泡排序(Bubble S...
    安然若知閱讀 657評(píng)論 0 0
  • 原文: http://www.dushumashang.com/2230作者:余澤民 新年前,我去塞格德看朋友,...
    dafxdafx閱讀 441評(píng)論 0 1
  • 親愛的曹老師: 時(shí)光飛逝,明兒就畢業(yè)了。現(xiàn)在還能清晰憶起第一次聽您講課的場(chǎng)景,普及了許多關(guān)于太陽能的知識(shí),有...
    Alice王志榮閱讀 476評(píng)論 0 0

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