美文网首页
8大排序算法之Swift

8大排序算法之Swift

作者: Mr_Candy | 来源:发表于2019-03-05 18:32 被阅读1次

App 开发是对计算机语言的使用,当然也需要设计算法的使用。虽然作为iOS开发,似乎接触的更多是界面和数据的处理, 但是,在实际开发中, 算法的使用能更高效的处理数据,同时算法能帮助我们更好的了解底层语言。

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
  • 希尔排序
  • 归并排序
  • 堆排序
  • 基数排序
  1. 冒泡排序代码如下:
   // 冒泡排序 O(n^2)
    func bubbleSort(arr: inout[Int]) -> [Int] {
        for i in 0..<arr.count {
            for j in i + 1..<arr.count {
                if arr[i] > arr[j] {
                    let temp = arr[i]
                    arr[i] = arr[j]
                    arr[j] = temp
                }
            }
            print(arr)
        }
        print("--------最终结果: \(arr)")
        return arr
    }
        return arr
    }

2 . 选择排序算法代码如下:

   // 选择排序 时间复杂度 O(n^2)
    func selectSort(arr: inout[Int]) -> [Int] {
        for i in 0..<arr.count {
            var minIndex = i
            for j in i + 1..<arr.count {
                if arr[minIndex] > arr[j] {
                    minIndex = j
                }
            }
            if i !=  minIndex{
                let temp  = arr[i]
                arr[i] = arr[minIndex]
                arr[minIndex] = temp
            }
            print(arr)
        }
        print("--------最终结果: \(arr)")
        return arr
    }
  1. 插入排序算法如下:
// 插入排序
    func insertSort(arr: inout[Int]) -> [Int] {
        for i in 1..<arr.count {
            let temp = arr[i]
            var  j  = i
            while j > 0, temp < arr[j - 1]{
                arr[j] = arr[j - 1]
                j -= 1
            }
            arr[j] = temp
            print(arr)
        }
        return arr
    }
  1. 快速排序算法如下:
// 快速排序
    func partition(arr: inout[Int], left: Int, right: Int) -> Int {
        var left = left
        var right = right
        let pivot = arr[left]
        
        while left < right {
            while left < right, arr[right] >= pivot{
                right -= 1
            }
            arr[left] = arr[right]
            while left < right, arr[left] <= pivot{
                left += 1
            }
            arr[right] = arr[left]
        }
        arr[left] = pivot
        
        print(arr)
        return left
    }
    
    func quickSort(arr: inout[Int], left: Int, right: Int){
        guard left <= right else {
            return
        }
        let prvotIndex = partition(arr: &arr, left: left, right: right)
        quickSort(arr: &arr, left: left, right: prvotIndex - 1)
        quickSort(arr: &arr, left: prvotIndex + 1, right: right)
    }

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

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

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

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 常见排序算法 - Swift实现

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

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

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

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 2018-06-30

    排序算法之归并排序 归并排序算法是排序算法中的经典算法之一,其核心思想是利用归并的思想实现的排序方法,该算法采用经...

  • Swift排序算法

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

  • 排序算法 Swift

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

  • Swift排序算法

网友评论

      本文标题:8大排序算法之Swift

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