pragma mark - 插入排序算法 (升序)
- (void)sortWithArray:(NSArray *)array
{
NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
NSLog(@"排序前數(shù)組 = %@", mtlarray);
for (int i = 1; i < mtlarray.count; i++) {
int tmp = [mtlarray[i] intValue];
for (int j = i-1; j >= 0 && tmp < [mtlarray[j] intValue]; j--) {
NSLog(@"i == %d j == %d 循環(huán)時(shí)tmp = %d array[j]=%d", i, j, tmp, [mtlarray[j] intValue]);
mtlarray[j+1] = mtlarray[j];
mtlarray[j] = [NSNumber numberWithInt:tmp];
NSLog(@"循環(huán)時(shí)數(shù)組 = %@", mtlarray);
}
NSLog(@"tmp ===== %d", tmp);
}
NSLog(@"排序后數(shù)組 = %@", mtlarray);
}
pragma mark - 冒泡排序算法 (升序)
/*
需要兩層for循環(huán),
第一層for循環(huán)決定了對(duì)比循環(huán)的圈數(shù),(第一圈后,決定了最后一個(gè)數(shù),第二圈后,決定了后兩個(gè)數(shù),下次圈循環(huán)時(shí),這些數(shù)不需要再對(duì)比),
第二層for循環(huán),是相鄰元素的對(duì)比,按大小將兩個(gè)元素交換位置即可.
*/
-
(void)bubbleSortWithArray:(NSArray *)array
{
NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
NSLog(@"排序前數(shù)組 = %@", mtlarray);
for (int i = 0; i < mtlarray.count-1; i++) {
for (int j = 0; j < mtlarray.count-i-1; j++) {
NSLog(@"循環(huán)時(shí) i == %d j == %d array[j]=%d", i, j, [mtlarray[j] intValue]);
if ([mtlarray[j] intValue] > [mtlarray[j+1] intValue]) {
NSString *tmp = mtlarray[j];
mtlarray[j] = mtlarray[j+1];
mtlarray[j+1] = tmp;
}NSLog(@"循環(huán)時(shí)數(shù)組 = %@", mtlarray); }
}
NSLog(@"排序后數(shù)組 = %@", mtlarray);
}
pragma mark - 選擇排序 (升序)
/*
每一次從待排序的數(shù)據(jù)元素中選出最小或最大的一個(gè)元素,存放在數(shù)組的起始位置,知道全部待排序的元素排完
*/
-
(void)selectedSortWithbubbleSortWithArray:(NSArray *)array
{
NSMutableArray *mtlarray = [NSMutableArray arrayWithArray:array];
NSLog(@"排序前數(shù)組 = %@", mtlarray);
for (int i = 0; i < mtlarray.count; i++) {
for (int j = i+1; j < mtlarray.count; j++) {
NSLog(@"循環(huán)時(shí) i == %d j == %d", i, j);
if ([mtlarray[i] intValue] > [mtlarray[j] intValue]) {
NSString *tmp = mtlarray[i];
mtlarray[i] = mtlarray[j];
mtlarray[j] = tmp;
}NSLog(@"循環(huán)時(shí)數(shù)組 = %@", mtlarray); }
}
NSLog(@"排序后數(shù)組 = %@", mtlarray);
}