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 - 数组排序方法(附样例)

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

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

Swift - 闭包的介绍及用法

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

冒泡排序大家都很了解了,我的理解:其实就是倒序两两比较,把小的数依次往前放。执行完以后,再遍历剩下的n-1个数。其最坏情况的时间维度为O(n²) 代码如下: func swap(inout...

【Swift-ObjC】冒泡排序

冒泡排序核心思想算法最讲究的就是算法的思想,只要将算法思想想明白了,就可以通过伪代码来写出算法,那么再使用对应的语言来实现就可以了。冒泡排序的核心思想就是通过与相邻元素的比较和交换,把小的数交换到最前...

swift3.0冒泡排序

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

Swift3.0 冒泡排序

经典低效排序,冒泡排序,逢面必考。

算法 -- iOS开发用Objective_C / Swift3.0实现:直接插入排序 / 二分法插入排序 / 希尔排序

iOS开发用OC和Swift3.0实现:直接插入排序排序 / 二分法插入排序 / 希尔排序.........

Swift排序Sort函数用法

摘自stackoverflow的问答用了几分钟做的简单翻译一个例子直接贴代码,不过多解释//这是我们的model class imageFile { var fileName = Strin...

Swift资源包--Sort方法

1,使用sort方法和闭包进行数组排序 sort方法返回一个数组的有序版本。(sort方法即为Swift2.0之前的sorted方法。而原来的sort方法改名为sortInPlace,用来将原数组修改...

算法 -- iOS开发用Objective_C / Swift3.0实现:快速排序 / 冒泡排序 / 选择排序

iOS开发用OC和Swift3.0实现快速排序 / 冒泡排序 / 选择排序
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift 3.0 冒泡排序,插入排序,选择排序,快速排序
举报原因:
原因补充:

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