选择排序算法。迅速的。

时间:2017-03-23 22:22:02

标签: swift algorithm sorting

Ray Wenderlich提供了一个很好的快速算法资源: https://github.com/raywenderlich/swift-algorithm-club

其中一个基本的是"选择排序":

func selectionSort(_ array: [Int]) -> [Int] {
  guard array.count > 1 else { return array }  

  var a = array                    
  for x in 0 ..< a.count - 1 {     

    var lowest = x
    for y in x + 1 ..< a.count {   
      if a[y] < a[lowest] {
        lowest = y
      }
    }

    if x != lowest {              
      swap(&a[x], &a[lowest])
    }
  }
  return a
}

我试图了解这里发生的事情并与var lowest = x步骤混淆。 我决定为问题编写自己的解决方案,并没有使用该步骤:

func selectSortArray1(_ array: [Int]) -> [Int] {
    guard array.count > 1 else {return array}

    var subArray = array

    for x in 0..<subArray.count - 1 {

        for y in x+1..<subArray.count {

            if subArray[y] < subArray[x] {

                swap(&subArray[x], &subArray[y])
            }
        }
    }
    return subArray
}

似乎按预期工作。 但是,我怀疑自己。 某些边缘情况需要var lowest = x吗?

0 个答案:

没有答案