|
| 1 | +// |
| 2 | +// Sort.m |
| 3 | +// test1231231 |
| 4 | +// |
| 5 | +// Created by Scarlett Che on 2018/12/12. |
| 6 | +// Copyright © 2018 Scarlett Che. All rights reserved. |
| 7 | +// |
| 8 | + |
| 9 | +#import "Sort.h" |
| 10 | + |
| 11 | +@implementation Sort |
| 12 | +// 冒泡排序 |
| 13 | ++ (NSArray *)bubbleSortWithArray:(NSArray *)array { |
| 14 | + if (array.count <= 1) { |
| 15 | + return array; |
| 16 | + } |
| 17 | + |
| 18 | + NSMutableArray *aryM = array.mutableCopy; |
| 19 | + |
| 20 | + for (int i = 0; i < aryM.count - 1; i++) { |
| 21 | + BOOL flag = NO; // 提前结束标记 |
| 22 | + for (int j = 0; j < aryM.count - i - 1; j++) { |
| 23 | + NSInteger value1 = [aryM[j] integerValue]; |
| 24 | + NSInteger value2 = [aryM[j + 1] integerValue]; |
| 25 | + |
| 26 | + if (value1 > value2) { |
| 27 | + flag = YES; |
| 28 | + [aryM exchangeObjectAtIndex:j withObjectAtIndex:j+1]; |
| 29 | + } |
| 30 | + } |
| 31 | + |
| 32 | + |
| 33 | + if (flag == NO) { |
| 34 | + // 提前结束 |
| 35 | + break; |
| 36 | + } |
| 37 | + } |
| 38 | + return aryM.copy; |
| 39 | +} |
| 40 | + |
| 41 | +// 插入排序 |
| 42 | ++ (NSArray *)insertionSortWithArray:(NSArray *)array { |
| 43 | + NSMutableArray *aryU = array.mutableCopy; |
| 44 | + |
| 45 | + for (int i = 1; i < aryU.count; i++) { |
| 46 | + NSInteger value = [aryU[i] integerValue]; |
| 47 | + |
| 48 | + for (int j = 0; j < i; j ++) { |
| 49 | + NSInteger sortedValue = [aryU[j] integerValue]; |
| 50 | + if (value < sortedValue) { |
| 51 | + id obj = aryU[i]; |
| 52 | + [aryU removeObjectAtIndex:i]; |
| 53 | + [aryU insertObject:obj atIndex:j]; |
| 54 | + break; |
| 55 | + } |
| 56 | + } |
| 57 | + } |
| 58 | + return aryU.copy; |
| 59 | +} |
| 60 | + |
| 61 | +// 选择排序 |
| 62 | ++ (NSArray *)selectionSortWithArray:(NSArray *)array { |
| 63 | + if (array.count <= 1) { |
| 64 | + return array; |
| 65 | + } |
| 66 | + |
| 67 | + NSMutableArray *aryM = array.mutableCopy; |
| 68 | + for (int i = 0; i < array.count - 1; i++) { |
| 69 | + NSInteger minIndex = NSNotFound; |
| 70 | + NSInteger minValue = NSNotFound; |
| 71 | + for (int j = i + 1; j < array.count - 1; j++) { |
| 72 | + NSInteger tmp = [array[j] integerValue]; |
| 73 | + if (tmp < minValue) { |
| 74 | + minValue = tmp; |
| 75 | + minIndex = j; |
| 76 | + } |
| 77 | + } |
| 78 | + |
| 79 | + if (minIndex != NSNotFound && minValue != NSNotFound && minValue < [array[i] integerValue]) { |
| 80 | + [aryM exchangeObjectAtIndex:minIndex withObjectAtIndex:i]; |
| 81 | + } |
| 82 | + |
| 83 | + } |
| 84 | + return array; |
| 85 | +} |
| 86 | +@end |
0 commit comments