美文网首页
Swift排序算法

Swift排序算法

作者: huxq_coder | 来源:发表于2017-10-16 16:32 被阅读0次

swift 排序算法

冒泡排序

原理:两两相邻元素进行比较,把较小的放到前面
平均时间复杂度为O(n^2),空间复杂度为O(1)

inout 通过函数改变函数外部的变量的值,

201111301912294589.gif
func bubbleSort(arr: inout [Int]) -> [Int]{
    //标记位,若为true,则表示数组未经过任何交换,已经是有序的
    var flag = true
    for i in 0..<arr.count-1 {
        for j in 0..<arr.count-1-i {
            if arr[j] > arr[j+1]{
                flag = false
                let temp = arr[j]
                arr[j] = arr[j+1]
                arr[j+1] = temp
                /** 空间复杂度优化
                 arr[j] = arr[j] + arr[j+1]
                 arr[j+1] = arr[j] - arr[j+1]
                 arr[j] = arr[j] - arr[j+1]
                 **/
            }
        }
        if flag {
            break
        }
    }
    return arr
}
var arr = [1,14,7,54,89,9]
bubbleSort(arr: &arr)

选择排序

原理:在未排序的序列中找到最小元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续查找最小元素,放到已排序的序列的末尾,以此类推,直到所有元素排序完成
平均时间复杂度为O(n^2)
func selectSort(arr: inout [Int]) -> [Int]{
    var minIndex = 0
    for i in 0...arr.count-2 {
        for j in i+1...arr.count-1 {
            minIndex = i
            if arr[minIndex] > arr[j] {
                minIndex = j
            }
            if i != minIndex {
                let temp = arr[i]
                arr[i] = arr[minIndex]
                arr[minIndex] = temp
            }
        }
    }
    return arr;
}

selectSort(arr: &arr)

简单插入排序

原理:将数据分为有序和无序两部分,依次将无序的元素插入到有序的部分,直到所有的元素都是有序的。稳定排序算法
平均时间复杂度为O(n^2)
func insertSort(arr: inout [Int]) -> [Int]{
    for i in 1..<arr.count {
        for j in (1...i).reversed() {
            if arr[j] < arr[j-1] {
                arr[j] = arr[j] + arr[j-1]
                arr[j-1] = arr[j] - arr[j-1]
                arr[j] = arr[j] - arr[j-1]
            }
        }
    }
    return arr
}
arr = [31,4,5,2,56,43,0,45,1]
insertSort(arr: &arr)

相关文章

  • Swift的十大经典排序算法总结

    Swift的十大经典排序算法总结 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排...

  • 常见排序算法 - Swift实现

    常见排序算法 排序算法是算法和数据结构中最为基础,同时很多面试也都是各种算法的变种,因此使用swift对目前较为常...

  • swift中几种排序算法原理的UI动态实现

    swift中的排序算法总结 冒泡排序 选择排序 快速排序 插入排序 堆排序 归并排序 系统排序 我们将这几种数组排...

  • Swift排序算法

    swift 排序算法 冒泡排序 原理:两两相邻元素进行比较,把较小的放到前面 平均时间复杂度为O(n^2),空间复...

  • 排序算法 Swift

    冒泡排序 冒泡排序是一种时间复杂度为 O(N^2) 的慢速排序。每一次遍历数组,比较相邻两元素的大小,将较大者换到...

  • Swift排序算法

  • Swift排序算法

    本文采用数组实现。 直接插入排序 思想:每次将无序区的第一个记录按关键字插入到有序区的合适位置,并将有序区的长度加...

  • Swift--算法排序

    本文主要记录Swift中常用到的七种算法: 一、冒泡排序

  • Aha! Algorithms - Bubble Sort

    《啊哈!算法》第 1 章第 2 节,冒泡排序的 Swift 实现 问题 给学生成绩排序,打印排序后的名字(和成绩)...

  • 算法

    冒泡排序、选择排序 swift 写法 OC 写法 斐波那契算法【后一项等于前两项之和】

网友评论

      本文标题:Swift排序算法

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