美文网首页
Swift实现经典排序算法

Swift实现经典排序算法

作者: 左方 | 来源:发表于2021-06-25 10:46 被阅读0次

测试用数据:var array = [54,3,71,80,81,50,38,10,44,20]

一、 冒泡排序

  1. 比较相邻两个数据如果。第一个比第二个大,就交换两个数
  2. 对每一个相邻的数做同样1的工作,这样从开始一队到结尾一队在最后的数就是最大的数。
  3. 针对所有元素上面的操作,除了最后一个。

重复1~3步骤,直到顺序完成。


冒泡排序
///冒泡
func bubbleSort(_ nums: inout [Int]) {
    let n = nums.count
    for i in 0..<n {
        for j in 0..<(n - 1 - i) {
            if nums[j] > nums[j + 1] {
                nums.swapAt(j, j + 1)
            }
        }
    }
    print("冒泡: \(nums)")
}

二、 选择排序

1.在一个长度为 N 的无序数组中,第一次遍历 n-1 个数找到最小的和第一个数交换。
2.第二次从下一个数开始遍历 n-2 个数,找到最小的数和第二个数交换。
3.重复以上操作直到第 n-1 次遍历最小的数和第 n-1 个数交换,排序完成。


选择排序
///选择排序
func selectionSort(_ nums: inout [Int]) {
    let n = nums.count
    for i in 0..<n {
        var k = I //从第一个元素开始取
        for j in (k+1..<n){ //选择K后面的元素
            if(nums[k] > nums[j]){
                k = j //取小的元素
            }
        }
        if(k != i){
            nums.swapAt(k, i)//交换位置
        }
    }
    print("选择: \(nums)")
}

三、 快速排序

快速排序
func quickSorted(_ nums: inout [Int]) {
    guard nums.count > 1 else { return }
    let pivot:Int! = nums.first
    let p = nums.partition(by: { $0 > pivot! })
    var first = Array(nums[1..<p])
    var second = Array(nums[p...])
    quickSorted(&first)
    quickSorted(&second)
    nums = Array(first) + Array([pivot]) + Array(second)
    print("快速: \(nums)")
}

四、 插入排序

插入排序
func insertionSort(_ nums: inout [Int]) {
    let n = nums.count;
    for i in 1..<n {
        for j in 1...I {
            if nums[j] < nums[j-1] {
                nums.swapAt(j, j-1)
            }
        }
    }
    print("插入: \(nums)")
}

五、 希尔排序

希尔排序
func shellSort(_ nums: inout [Int]) {
    var gap:Int = nums.count/2 //步长(当步长=1时,就是插入排序)
    while gap > 0 {
        for i in 0 ..< nums.count {
            var j = I
            while (j+gap) < nums.count {
                if nums[j] > nums[j+gap] {
                    nums.swapAt(j, j+gap)
                }
                j = j+gap
            }
        }
        gap = gap / 2
    }
    print("希尔: \(nums)")
}

相关文章

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

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

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

  • Swift实现经典排序算法

    测试用数据:var array = [54,3,71,80,81,50,38,10,44,20] 一、 冒泡排序 ...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 2018-06-30

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

  • 排序算法

    小胡子哥:聊一聊排序算法白话经典算法系列之五 归并排序的实现

  • Swift实现八种经典排序算法

    一、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素...

  • 【非比较类排序算法】计数排序、桶排序(PHP实现)

    常见的经典非比较类排序算法有计数排序、桶排序。区别于比较类排序,非比较类排序利用额外的内存空间实现更快排序,算法以...

  • 排序算法之归并排序

    归并排序(Merge Sort) 归并排序是利用归并的思想实现排序的方式,该算法采用的是经典的分治算法 归并排序过...

  • Aha! Algorithms - Bubble Sort

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

网友评论

      本文标题:Swift实现经典排序算法

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