Swift-鸡尾酒排序

鸡尾酒排序也就是定向冒泡排序鸡尾酒搅拌排序, 搅拌排序 (也可以视作[选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
排序过程:
先对数组从左到右进行冒泡排序(升序),则最大的元素去到最右端
再对数组从右到左进行冒泡排序(降序),则最小的元素去到最左端
以此类推,依次改变冒泡的方向,并不断缩小未排序元素的范围,直到最后一个元素结束.
核心代码:
<pre><code>` func sort(arr:inout [Int]) {
if arr.count == 0 {
return
}

    var left:Int = 0
    var right:Int = arr.count - 1
    var index:Int = 0
    
    while left < right {
        for  i in left..<right {
            if arr[i] > arr[i + 1] {
                swap(&arr[i], &arr[i + 1])
                index = i
            }
        }
        
        right = index
        let temp:Int = left + 1
        if temp < right {
            for i in (temp...right).reversed() {
                if arr[i] < arr[i-1] {
                    swap(&arr[i], &arr[i-1])
                    index = i
                }
            }
            left = index
        }
    }
}`</code></pre>

测试代码:
<pre><code>let cocktailSort:CocktailSort = CocktailSort() var arr:[Int] = [110, 9, 8, 1, 5, 4, 3, 2, 6, 7] cocktailSort.sort(arr: &arr) print("FlyElephant---鸡尾酒排序---\(arr)")</code></pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容