swift 3.0 冒泡排序,插入排序,选择排序,快速排序

原创 2017年02月15日 11:26:23
var array = [11,3,53,21,34,12,34]

// bubble sort

for i in (0..<array.count) {

    for j in (i..<array.count - 1) {

        if array[j] > array[j + 1] {

            let tmp = array[j]

            array[j] = array[j + 1]

            array[j + 1] = tmp

        }

    }

}

print(array)

// insert sort

for i in (0..<array.count) {

    var key = array[i]

    var j = i - 1

    while j >= 0 {

        if array[j] > key {
            array[j + 1] = array[j]
            array[j] = key
        }

        j -= 1
    }

}

print(array)

//select sort

for i in (0..<array.count - 1) {

//    print(i)

    var index = i

    for j in (i..<array.count) {

        if array[index] > array[j] {

            index = j

        }

    }

    let tmp = array[i]
    array[i] = array[index]
    array[index] = tmp

}

print(array)

quick sort

var array = [66,13,51,76,81,26,57,69,23]


func partition( list:inout [Int],left:Int,right:Int) -> Int{

    var pivot_index = left
    let piovt = list[left]

    for i in (left ... right) {

        print(i)

        if list[i] < piovt {

            pivot_index += 1

            if pivot_index != i {

                swap(&list[pivot_index], &list[i])

            }

        }

    }

    swap(&list[left], &list[pivot_index])
    return pivot_index

}


func quickSortArray( list:inout [Int],left:Int,right:Int) -> Void{

    if left < right {

        let pivot_index = partition(list: &list, left: left, right: right)

        quickSortArray(list: &list, left: left, right: pivot_index - 1)
        quickSortArray(list: &list, left: pivot_index + 1, right: right)
    }
}

quickSortArray(list: &array, left: 0, right: array.count - 1)

quick sort 2

func quicksort<T: Comparable>(_ a: [T]) -> [T] {
    guard a.count > 1 else { return a }
    let pivot = a[a.count/2]
    let less = a.filter { $0 < pivot }
    let equal = a.filter { $0 == pivot }
    let greater = a.filter { $0 > pivot }
    return quicksort(less) + equal + quicksort(greater)
}

let list1 = [ 10, 0, 3, 9, 2, 14, 8, 27, 1, 5, 8, -1, 26 ]
print(quicksort(list1))
版权声明:本文为博主原创文章欢迎分享转载。

Swift实现的快速排序及sorted方法的对比

Swift语言有着优秀的函数式编程能力,面试的时候面试官都喜欢问我们快速排序,那么用Swift如何实现一个快速排序呢?首先扩展Array类:extension Array { var deco...
  • cg1991130
  • cg1991130
  • 2015年09月07日 22:28
  • 4164

Swift - 数组排序方法(附样例)

下面通过一个样例演示如何对数组元素进行排序。数组内为自定义用户对象,最终要实现按用户名排序,数据如下:   var userList = [UserInfo...
  • hard_working1
  • hard_working1
  • 2016年02月28日 09:28
  • 4901

Swift Array的高级使用

开发过程中使用数组的概率非常高,这里对部分功能做一个介绍! //数组问题 struct student { var name = "123" } var str = "Hello,...
  • Arodung
  • Arodung
  • 2017年02月06日 14:17
  • 876

Swift - 闭包的介绍及用法(以数组排序为例)

Swift - 闭包的介绍及用法
  • ziying273
  • ziying273
  • 2015年12月11日 11:06
  • 1702

Swift4.0 数组的常用详解

//创建数据的几种方式 var someArray1 = [String](repeatElement("123", count: 3)) //类型是字符串,默认是123 长度是3 var someA...
  • bddzzw
  • bddzzw
  • 2017年10月18日 18:21
  • 1523

【Swift初见】Swift数组(二)

在苹果的开发文档中对Array还提供了其他的操作算法: 1、Sort函数: 对数组进行排序,根据指定的排序规则,看下面的代码: var array = [2, 3, 4, 5] array.sort...
  • weasleyqi
  • weasleyqi
  • 2014年12月15日 13:48
  • 11673

swift3.0冒泡排序

1.因为swift3.0的for循环已经抹去了c语言的风格,所以进行冒泡排序如下 var array: [Int] = [2,5,3,1,4,8,10,7,6,9]          ...
  • aa31140105
  • aa31140105
  • 2016年10月21日 09:56
  • 1192

Swift-Sort排序函数

前言 在OC中对一个数组排序,以及字典的排序往往都是自己写一个函数去实现。swift中就不用再自己再去做这样的事了。Swift提供了sort函数,可以让数组和字典很方便的实现排序。 简单使用 降序 l...
  • MinggeQingchun
  • MinggeQingchun
  • 2016年11月24日 22:53
  • 418

Swift资源包--Sort方法

1,使用sort方法和闭包进行数组排序 sort方法返回一个数组的有序版本。(sort方法即为Swift2.0之前的sorted方法。而原来的sort方法改名为sortInPlace,用来将原数组修改...
  • jiang314
  • jiang314
  • 2016年05月26日 10:37
  • 1826

iOS编程——Swift实现冒泡排序算法 以及优化

冒泡排序大家都很了解了,我的理解:其实就是倒序两两比较,把小的数依次往前放。执行完以后,再遍历剩下的n-1个数。其最坏情况的时间维度为O(n²) 代码如下: func swap(inout...
  • wc455287693
  • wc455287693
  • 2015年07月30日 17:40
  • 1664
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift 3.0 冒泡排序,插入排序,选择排序,快速排序
举报原因:
原因补充:

(最多只允许输入30个字)