学习博客
选择排序百度百科
选择排序(Selection sort)
是一种简单直观的排序算法。
工作原理:
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
- oc版本
//算法封装方法
- (NSArray *)selectSortMethod:(NSArray *)dataArr{
if (dataArr.count <= 1) {
return dataArr;
}
NSMutableArray *tempArr = [NSMutableArray arrayWithArray:dataArr];
NSInteger minIndex;
for (NSInteger i = 0 ; i < tempArr.count - 1; i++) {
minIndex = i;
for (NSInteger j = i+1; j < tempArr.count; j++) {
if ([tempArr[j] integerValue] < [tempArr[minIndex] integerValue]) {
minIndex = j;
}
}
if (i != minIndex) {
[tempArr exchangeObjectAtIndex:i withObjectAtIndex:minIndex];
}
}
return tempArr;
}
//打印数组结果输出为一行
- (void)showBubbleSortResult:(NSMutableArray * )array {
NSString * str = @"";
for (NSNumber * value in array) {
str = [str stringByAppendingString:[NSString stringWithFormat:@"%zd ",[value integerValue]]];
}
NSLog(@"%@",str);
NSLog(@"<=============>");
}
NSArray *oringeList = @[@(10),@(1),@(2),@(9),@(-1),@(7),@(19),@(5),@(-9),@(3),@(8),@(13),@(17)];
NSMutableArray * afterList = [NSMutableArray arrayWithArray:[self selectSortMethod:oringeList]];
[self showBubbleSortResult:afterList];
- swift版本
func selectionSortMethod(_ nums: [Int]) -> [Int] {
guard nums.count > 1 else { return nums }//必须大于1才能使用
var array = nums
var minIndex: Int
for i in 0 ..< array.count - 1 {
minIndex = i
for j in i + 1 ..< array.count {
if array[j] < array[minIndex] {
minIndex = j
}
}
if i != minIndex {
array.swapAt(i, minIndex)
}
}
return array
}
let oringeList = [10,1,2,9,-1,7,19,5,-9,3,8,13,17]
let afterList = selectionSortMethod(oringeList)
print(oringeList)
print("======")
print(afterList)
网友评论