常見排序演算法 採用Objective c實現

2021-07-24 10:08:28 字數 2724 閱讀 5156

**: 1

//2algorithm4//

5//created by 張 漢國 on 11-9-30.6//

7//89

#import

1011

@inte***ce sort : nsobject

1415

//選擇排序

16-(void)selectsortwitharray:(nsarray *)adata;

17//

插入排序

18-(void)insertsortwitharray:(nsarray *)adata;

19//

快速排序

20-(void)quicksortwitharray:(nsarray *)adata;

2122 -(void)swapwithdata:(nsmutablearray *)adata index1:(nsinteger)index1 index2:(nsinteger)index2;

2324

25@end

1//2

algorithm4//

5//created by 張 漢國 on 11-9-30.6//

7//89

#import

"sort.h"10

11@inte***ce sort()

12 -(void)quicksortwitharray:(nsarray *)adata left:(nsinteger)left right:(nsinteger)right;

13@end

1415

@implementation sort

1617 - (id)init

18 23

24return self;

25 }

2627 -(void)selectsortwitharray:(nsarray *)adata

35 }

36if (m != i)

39 }

40 nslog(@"

選擇排序後的結果:%@

",[data description]);

41 [data release];

42 }

4344 -(void)insertsortwitharray:(nsarray *)adata

53 [data replaceobjectatindex:j+1 withobject:tmp];

54 }

55 nslog(@"

插入排序後的結果:%@

",[data description]);

56 [data release];

57 }

5859 -(void)quicksortwitharray:(nsarray *)adata

6667 -(void)quicksortwitharray:(nsmutablearray *)adata left:(nsinteger)left right:(nsinteger)right

77 [self swapwithdata:adata index1:i index2:j];

78 }

79 [self swapwithdata:adata index1:left index2:j];

80 [self quicksortwitharray:adata left:left right:j-1];

81 [self quicksortwitharray:adata left:j+1 right:right];

82 }

83 }

8485

86 -(void)dealloc

8990 -(void)swapwithdata:(nsmutablearray *)adata index1:(nsinteger)index1 index2:(nsinteger)index2

9596

@end

測試例子:

1//2

algorithm4//

5//created by 張 漢國 on 11-9-30.6//

7//89

#import

10#import

"sort.h"11

12#define ksize 20

13#define kmax 100

1415

int main (int argc, const

char * argv)

16 31

32 nslog(@"

排序前的資料:%@

",[data description]);

3334 sort *sort = [[sort alloc] init];

35 [sort selectsortwitharray:data];

36 [sort insertsortwitharray:data];

37 [sort quicksortwitharray:data];

38 [sort release];

39 [data release];

40 [pool drain];

41return

0;42 }

常見排序演算法

一.選擇排序 1.概念 每次從無序的子陣列裡面選擇最小的數,放在有序區的後面 既與無序區的首元素交換 不穩定排序 時間複雜度o n 2 輔助儲存o 1 2.實現 int selection sort int a,int len len為陣列元素個數 二.氣泡排序 1.概念 重複訪問數列n 1次,每次...

常見排序演算法

1 插入排序 直接插入排序,是一種最簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的 記錄數增1的有序表。初始 38 65 27 76 13 i 1 13 選13為監視哨並假設為乙個有序序列 i 2 13 38 待插入元素38 13 i 3 13 38 65 待插入...

常見排序演算法

排序演算法作為常用的基本演算法,今天就來總結一下各種經典排序演算法,這裡只貼出 對演算法的文字描述可以在課本或其它部落格上找到很多詳盡的敘述,這裡直接上 而不是常見演算法書上的偽 希望對正在努力學資料結構與演算法的朋友們有幫助 1 氣泡排序 void bubblesort t a,int n if ...