算法与数据结构之排序(Swift版)

1、冒泡排序 时间复杂度为O(n²)

func bubbleSort() -> Void {
    let list = NSMutableArray.init(array: [1,4,7,13,33,3,5]);
    for i in 0..<list.count-1 {//进行六轮冒泡
        for j in 0..<list.count-1-i {
            let a  = list[j] as! NSInteger;
            let b  = list[j+1] as! NSInteger
            if a<b {
                list.exchangeObject(at: j, withObjectAt: j+1);
            }
        }
    }
    print(list);
}

2、选择排序 时间复杂度为O(n²)

    func selectSort() -> Void {
        let list = NSMutableArray.init(array: [4,1,7,13,33,3,5]);
        for i in 0..<list.count{
            var minIndex = i;//默认第0个数字是最小数字,0为最小索引
            for j in i+1..<list.count {//假定4为最小数字,从第1个开始遍历
                let a  = list[j] as! NSInteger;
                let b  = list[minIndex] as! NSInteger;
                if a<b {//
                    minIndex = j;//如果a比默认的最小数字还小,更新最小索引
                }
            }
            //每轮获取到最小值的索引后,进行索引值交换
            list .exchangeObject(at: i, withObjectAt: minIndex);
        }
        print(list);
   }

3、插入排序 时间复杂度为O(n²)

    func insertSort() -> Void {
        let list = NSMutableArray.init(array: [4,1,7,13,33,3,5]);
        let sortList:NSMutableArray = NSMutableArray.init();
        for i in 0..<list.count {
            let a = list[i] as! NSInteger;
            sortList.add(a);
            for j in 0..<sortList.count {
                let b = sortList[j] as! NSInteger;
                if a<b {//新加的元素在数组末位,如果小于数组中的元素,则交换位置
                    sortList.exchangeObject(at: j, withObjectAt:sortList.count-1);
                }
            }
        }
        print(sortList);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。