iOS---冒泡排序、插入排序、选择排序
#pragma mark----冒泡排序----将相邻的两个元素两两比较,根据大小来交换元素的位置
- (NSArray*)bubbleSort:(NSArray*)origonArr{
NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];
for(NSInteger indexI =0; indexI < newArr.count-1; indexI++){
BOOL isSorted = YES;//用来标记每一层是否是有序的,默认为true.
for(NSInteger indexJ =0; indexJ < newArr.count-1; indexJ++){
if(newArr[indexJ] > newArr[indexJ+1]) {
isSorted =NO;//// 如果有交换元素,那么不是有序,该bool值改为NO.
[newArr exchangeObjectAtIndex:indexJ+1 withObjectAtIndex:indexJ];
}
}
if(isSorted) {
break;// 在内层中,如果该bool值没有被改为NO,那么就说明内层没有元素交换,那么该数列排序完成了,直接结束循环。
}
}
returnnewArr;
}
#pragma mark---插入排序---
- (NSArray*)insertSort:(NSArray*)origonArr{
NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];
for(NSInteger indexI =1; indexI <newArr.count; indexI++) {
for(NSInteger indexJ = indexI; indexJ >0; indexJ--) {
if(newArr[indexJ-1] > newArr[indexJ]) {
[newArr exchangeObjectAtIndex:indexJ-1 withObjectAtIndex:indexJ];
}else{
break;
}
}
}
returnnewArr;
}
#pragma mark-----选择排序---就是先找出数组中最小的,然后依次找出数据并排序
- (NSArray*)selectionSort:(NSArray*)origonArr{
NSMutableArray *newArr = [[NSMutableArray alloc]initWithArray:origonArr];
for(NSInteger indexI =0; indexI<newArr.count; indexI++) {
NSInteger minIndex = indexI;
for(NSInteger indexJ = indexI+1; indexJ<newArr.count; indexJ++) {
if(newArr[indexJ] < newArr[minIndex]) {
minIndex = indexJ;
}
}
[newArr exchangeObjectAtIndex:indexI withObjectAtIndex:minIndex];
}
returnnewArr;
}