常見(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);
}