冒泡排序
/*
冒泡排序法的基本思想:(以升序?yàn)槔┖衝個(gè)元素的數(shù)組原則上要進(jìn)行n-1次排序。對(duì)于每一躺的排序戴而,從第一個(gè)數(shù)開始凑术,依次比較前一個(gè)數(shù)與后一個(gè)數(shù)的大小。
如果前一個(gè)數(shù)比后一個(gè)數(shù)大所意,則進(jìn)行交換淮逊。這樣一輪過后,最大的數(shù)將會(huì)出現(xiàn)稱為最末位的數(shù)組元素扶踊。第二輪則去掉最后一個(gè)數(shù)泄鹏,對(duì)前n-1個(gè)數(shù)再按照上面的步驟找出最
大數(shù),該數(shù)將稱為倒數(shù)第二的數(shù)組元素......n-1輪過后秧耗,就完成了排序备籽。
/
/冒泡排序 分析詳解:
原始數(shù)據(jù): 28, 30, 19, 2, 23
第一趟:
第一次:28, 30, 19, 2, 23
第二次:28, 19, 30, 2, 23
第三次:28, 19, 2, 30, 23
第四次:28, 19, 2, 23, 30
第二趟:
第一次:19, 28, 2, 23, 30
第二次:19, 2, 28, 23, 30
第三次:19, 2, 23, 28, 30
第三趟:
第一次:2, 19, 23, 28, 30
第二次:2, 19, 23, 28, 30
第四趟:
第一次:2, 19, 23, 28, 30
*/
//n個(gè)元素比較n-1趟
//每趟比較次數(shù) = 數(shù)組元素個(gè)數(shù)-1 - 趟數(shù)
NSMutableArray *numbers = [NSMutableArray arrayWithObjects:@"17",@"28",@"36",@"15",@"39", nil nil];
NSLog(@"排序前%@",numbers);
for (int i = 0; i < 5 - 1; i++) {
//比較的躺數(shù)
for (int j = 0; j < 5 - 1 - i; j++) {
//比較的次數(shù)
if ([numbers[j] intValue] > [numbers[j + 1] intValue]) {
//這里為升序排序
方式一:
int temp = [numbers[j] intValue];
numbers[j] = numbers[j + 1];
//OC中的數(shù)組只能存儲(chǔ)對(duì)象,所以這里轉(zhuǎn)換成string對(duì)象
numbers[j + 1] = [NSString stringWithFormat:@"%d",temp];
方式二:
[numbers exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
NSLog(@"排序后%@",numbers);