Objective-C:11.Sort
This commit is contained in:
parent
6b50ac0265
commit
90afeee723
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,6 +18,7 @@
|
|||||||
*.zip
|
*.zip
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.rar
|
*.rar
|
||||||
|
*.DS_Store
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
hs_err_pid*
|
hs_err_pid*
|
||||||
|
24
object-c/11_Sort/Sort.h
Normal file
24
object-c/11_Sort/Sort.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//
|
||||||
|
// Sort.h
|
||||||
|
// test1231231
|
||||||
|
//
|
||||||
|
// Created by Scarlett Che on 2018/12/12.
|
||||||
|
// Copyright © 2018 Scarlett Che. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface Sort : NSObject
|
||||||
|
// 冒泡排序
|
||||||
|
+ (NSArray *)bubbleSortWithArray:(NSArray *)array;
|
||||||
|
|
||||||
|
// 插入排序
|
||||||
|
+ (NSArray *)insertionSortWithArray:(NSArray *)array;
|
||||||
|
|
||||||
|
// 选择排序
|
||||||
|
+ (NSArray *)selectionSortWithArray:(NSArray *)array;
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
86
object-c/11_Sort/Sort.m
Normal file
86
object-c/11_Sort/Sort.m
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
//
|
||||||
|
// Sort.m
|
||||||
|
// test1231231
|
||||||
|
//
|
||||||
|
// Created by Scarlett Che on 2018/12/12.
|
||||||
|
// Copyright © 2018 Scarlett Che. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "Sort.h"
|
||||||
|
|
||||||
|
@implementation Sort
|
||||||
|
// 冒泡排序
|
||||||
|
+ (NSArray *)bubbleSortWithArray:(NSArray *)array {
|
||||||
|
if (array.count <= 1) {
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSMutableArray *aryM = array.mutableCopy;
|
||||||
|
|
||||||
|
for (int i = 0; i < aryM.count - 1; i++) {
|
||||||
|
BOOL flag = NO; // 提前结束标记
|
||||||
|
for (int j = 0; j < aryM.count - i - 1; j++) {
|
||||||
|
NSInteger value1 = [aryM[j] integerValue];
|
||||||
|
NSInteger value2 = [aryM[j + 1] integerValue];
|
||||||
|
|
||||||
|
if (value1 > value2) {
|
||||||
|
flag = YES;
|
||||||
|
[aryM exchangeObjectAtIndex:j withObjectAtIndex:j+1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (flag == NO) {
|
||||||
|
// 提前结束
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aryM.copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 插入排序
|
||||||
|
+ (NSArray *)insertionSortWithArray:(NSArray *)array {
|
||||||
|
NSMutableArray *aryU = array.mutableCopy;
|
||||||
|
|
||||||
|
for (int i = 1; i < aryU.count; i++) {
|
||||||
|
NSInteger value = [aryU[i] integerValue];
|
||||||
|
|
||||||
|
for (int j = 0; j < i; j ++) {
|
||||||
|
NSInteger sortedValue = [aryU[j] integerValue];
|
||||||
|
if (value < sortedValue) {
|
||||||
|
id obj = aryU[i];
|
||||||
|
[aryU removeObjectAtIndex:i];
|
||||||
|
[aryU insertObject:obj atIndex:j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aryU.copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 选择排序
|
||||||
|
+ (NSArray *)selectionSortWithArray:(NSArray *)array {
|
||||||
|
if (array.count <= 1) {
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSMutableArray *aryM = array.mutableCopy;
|
||||||
|
for (int i = 0; i < array.count - 1; i++) {
|
||||||
|
NSInteger minIndex = NSNotFound;
|
||||||
|
NSInteger minValue = NSNotFound;
|
||||||
|
for (int j = i + 1; j < array.count - 1; j++) {
|
||||||
|
NSInteger tmp = [array[j] integerValue];
|
||||||
|
if (tmp < minValue) {
|
||||||
|
minValue = tmp;
|
||||||
|
minIndex = j;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (minIndex != NSNotFound && minValue != NSNotFound && minValue < [array[i] integerValue]) {
|
||||||
|
[aryM exchangeObjectAtIndex:minIndex withObjectAtIndex:i];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
@end
|
Loading…
Reference in New Issue
Block a user