ios 算法值选择排序

选择排序(Selection sort)是一种简单直观的排序算法。
工作原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

  • oc版本

oc demo

//算法封装方法
- (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)

swift demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值