算法的个人理解:
实现思路是从数组中取出每一个元素,依次和数组中剩余的元素进行比较,找出数组中最大或者最小的数放到数组的第一个位置,然后再在剩下的元素中找出第二大或者第二小的数放到数组中的第二个位置上,外层循环上总的比较次数是数组中元素个数少1,因为它不用和自身进行比较,内层循环从该数后一个数开始比较,直到数组中最后一个元素为止,内层循环每次结束之后就将找到的数和原来位置上的数进行交换。
- (void)selectionSortWithMutableArray:(NSMutableArray *)mutableArray{
for(inti =0; i < (mutableArray.count-1); i++) {//总的比较次数是数组元素个数减1,因为自己不用和自己进行一次比较,减掉的1就是这一次
for(intj = (i +1); j < mutableArray.count; j++) {//和数组中除自己以外的每一个元素进行比较,满足条件(大于\小于)后和原来的位置进行交换,第一次比较得出最大或者最小的数,第二次比较得出第二大或者第二小的数,第三次类推。。。
//if (mutableArray[i] < mutableArray[j]) {//从大到小进行排序
//NSInteger temp = [mutableArray[i] integerValue];
//mutableArray[i] = mutableArray[j];
//mutableArray[j] = [NSNumber numberWithInteger:temp];
//}
if(mutableArray[i] > mutableArray[j]) {//从小到大排序
NSIntegertemp = [mutableArray[i]integerValue];
mutableArray[i] = mutableArray[j];
mutableArray[j] = [NSNumbernumberWithInteger:temp];
}
}
}
}
网友评论