美文网首页
ios 算法之选择排序

ios 算法之选择排序

作者: 90后的晨仔 | 来源:发表于2021-02-07 16:44 被阅读0次

    学习博客
    选择排序百度百科
    选择排序(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

    相关文章

      网友评论

          本文标题:ios 算法之选择排序

          本文链接:https://www.haomeiwen.com/subject/nubztltx.html