OC排序算法整理
2019-10-18 本文已影响0人
没打伞的鱼
#pragma mark - 插入排序
-(void)insertionSort{
NSMutableArray * notSortedArray = [NSMutableArray arrayWithObjects: @"1",@"8",@"2",@"14",@"7",@"13",@"5",@"9",@"98",nil];
for (NSInteger i = 0 ; i < notSortedArray.count -1; i++){
for (NSInteger j = i+1; j >0; j --) {
if([notSortedArray[j] intValue] < [notSortedArray[j-1] intValue]){
[notSortedArray exchangeObjectAtIndex:j-1 withObjectAtIndex:j];
}else{
break;
}
}
}
NSLog(@"%@",notSortedArray);
}
#pragma mark - 选择排序
/**
从第一个位置开始比较,找出最小的,和第一个位置互换,开始下一轮。
类似于打擂台,都去与第一位置的人对比,选出最小的;然后再都去与第二位置的对比
*/
-(void)selectionSort{
NSMutableArray * notSortedArray = [NSMutableArray arrayWithObjects: @"1",@"8",@"2",@"14",@"7",@"13",@"5",@"9",@"98",nil];
for (NSInteger i = 0 ; i < notSortedArray.count - 1; i++){
for (NSInteger j = i+1; j < notSortedArray.count ; j ++) {
if([notSortedArray[j] intValue] < [notSortedArray[i] intValue]){
[notSortedArray exchangeObjectAtIndex:j withObjectAtIndex:i];
}
}
}
NSLog(@"%@",notSortedArray);
}
冒泡排序
原理
IMG_0056.jpg
/**
冒泡排序,相邻两个对比,前者比后者大,交换位置
*/
-(void)bubbleSort{
NSMutableArray * notSortedArray = [NSMutableArray arrayWithObjects: @"1",@"8",@"2",@"14",@"7",@"13",@"5",@"9",nil];
for (NSInteger i = 0 ; i < notSortedArray.count - 1; i++){
//第一次外循环找出最大的数,第二次外循环找出第二大的数……总共需要n-1次外循环
for (NSInteger j = 0; j < notSortedArray.count -1-i;j++) {
if([notSortedArray[j] intValue] > [notSortedArray[j+1] intValue]){
[notSortedArray exchangeObjectAtIndex:j+1 withObjectAtIndex:j];
}
}
}
NSLog(@"%@",notSortedArray);
}