冒泡排序算法
思路:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
针对所有的元素重复以上的步骤,直到没有任何一对数字需要比较。
NSMutableArray *array = [[NSMutableArray alloc]init];
NSArray *result = @[@"5",@"3",@"56",@"45",@"6",@"7",@"2",@"10"];
[array addObjectsFromArray:result];
for (int i = 0; i<array.count - 1; i++) {
// n-1-i 表示每轮对应交换完后的数字不用再比了
for (int j = 0; j<array.count-1-i; j++) {
NSInteger left = [array[j] integerValue];
NSInteger right = [array[j+1] integerValue];
if (left<right) { 从大到小 >是从小到大
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
NSLog(@"%@",array);
(
56,
45,
10,
7,
6,
5,
3,
2
)
快速排序
思路:
第一个数为基准数比较大小,右边找小的,左边找大的,这两个数进行交换,依次类推,直到相遇,分成两部分,继续以这个方法比较
NSArray * array1 = @[@2,@3,@7,@5,@9,@4,@6,@1,@8];
NSMutableArray * data = [NSMutableArray arrayWithArray:array1];
[self quickSortDataArray:data withStartIndex:0 andEndIndex:data.count - 1];
NSLog(@"=======%@",data);
选择排序
NSArray *numArr = @[@(10), @(1), @(7), @(2), @(8)];
NSMutableArray *oldArr = [NSMutableArray arrayWithArray:numArr];
for (NSInteger x = 0; x < oldArr.count; x++) {
for (NSInteger y = x + 1; y < oldArr.count; y++) {
if ([oldArr[y] integerValue] < [oldArr[x] integerValue]) {
NSInteger temp = [oldArr[y] integerValue];
oldArr[y] = oldArr[x];
oldArr[x] = @(temp);
}
}
}
原理:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序
网友评论