算法的个人理解:
冒泡排序由两层for循环实现,最外层的for循环每执行一次,叫做“一趟”。循环每完成一趟就将待排序数组中的一个数放到一个合适的位置;内层循环完成的是数组中相邻两个数的对比,根据内层循环就可以决定最后排好序的数组的方向(从大到小还是从小到达)。假设带排序数组中有n个数,那么只需要进行(n - 1)趟排序,因为每执行一次排序就可以排出数组中某一个数的正确位置,n个数中排好序的有(n - 1)个,那么最后一个数不用排它的位置就是正确的。
- (void)bubbleSortWithMutableArray:(NSMutableArray *)mutableArray{
for(inti =0; i < (mutableArray.count-1); i++) {//假如有n个数进行排序,那么只要排n - 1趟就好了,因为每一趟排序就是找出一个数把它正确放在第一或者第几的位置上,当n - 1个数排好序之后,那么最后一个自然也就是有序的,不用再去排序
for(intj =0; j < ((mutableArray.count-1) - i); j++) {//因为每一趟排序之后会排出一个数,这个数的位置已经正确,所以不用继续去比较(排到第几趟就代表着已经排出多少个数,所以要减去已经排出的数的个数),然后每一趟的比较都是从第一位(也就是j = 0)开始比较的,
//if (mutableArray[j] < mutableArray[j + 1]) {//从大到小的排序
//NSInteger temp = [mutableArray[j] integerValue];
//mutableArray[j] = mutableArray[j + 1];
//mutableArray[j + 1] = [NSNumber numberWithInteger:temp];
//}
if(mutableArray[j] > mutableArray[j +1]) {//从小到大
NSIntegertemp = [mutableArray[j]integerValue];
mutableArray[j] = mutableArray[j +1];
mutableArray[j +1] = [NSNumbernumberWithInteger:temp];
}
}
}
}
网友评论