Objective-C實現冒泡,選擇,插入,快速排序演算法__演算法
來源:互聯網
上載者:User
首先是header檔案:
Objective-c代碼 #import <Foundation/Foundation.h> @interface Sort : NSObject{ } //冒泡排序 -(void)bunbleSortWithArray:(NSArray *)aData; //選擇排序 -(void)selectSortWithArray:(NSArray *)aData; //插入排序 -(void)insertSortWithArray:(NSArray *)aData; //快速排序,對冒泡排序的一種改進 -(void)quickSortWithArray:(NSArray *)aData; -(void)swapWithData:(NSMutableArray *)aData index1:(NSInteger)index1 index2:(NSInteger)index2; @end
接著是實現:
Objective-c代碼 #import "Sort.h" @interface Sort() -(void)quickSortWithArray:(NSArray *)aData left:(NSInteger)left right:(NSInteger)right; @end @implementation Sort - (id)init { self = [super init]; if (self) { // Initialization code here. } return self; } -(void)bunbleSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc]initWithArray:aData]; for (int i=0; i<[data count]-1; i++) { for (int j =0; j<[data count]-1-i; j++) { if ([data objectAtIndex:j] > [data objectAtIndex:j+1]) { [self swapWithData:data index1:j index2:j+1]; } } } NSLog(@"冒泡排序後的結果:%@",[data description]); } -(void)selectSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc]initWithArray:aData]; for (int i=0; i<[data count]-1; i++) { int m =i; for (int j =i+1; j<[data count]; j++) { if ([data objectAtIndex:j] < [data objectAtIndex:m]) { m = j; } } if (m != i) { [self swapWithData:data index1:m index2:i]; } } NSLog(@"選擇排序後的結果:%@",[data description]); } -(void)insertSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc]initWithArray:aData]; for (int i = 1; i < [data count]; i++) { id tmp = [data objectAtIndex:i]; int j = i-1; while (j != -1 && [data objectAtIndex:j] > tmp) { [data replaceObjectAtIndex:j+1 withObject:[data objectAtIndex:j]]; j--; } [data replaceObjectAtIndex:j+1 withObject:tmp]; } NSLog(@"插入排序後的結果:%@",[data description]); } -(void)quickSortWithArray:(NSArray *)aData{ NSMutableArray *data = [[NSMutableArray alloc] initWithArray:aData]; [self quickSortWithArray:data left:0 right:[aData count]-1]; NSLog(@"快速排序後的結果:%@",[data description]); } -(void)quickSortWithArray:(NSMutableArray *)aData left:(NSInteger)left right:(NSInteger)right{ if (right > left) { NSInteger i = left; NSInteger j = right + 1; while (true) { while (i+1 < [aData count] && [aData objectAtIndex:++i] < [aData objectAtI