美文网首页
Swift: 数组无序排列,自定义模型去重,冒泡排序

Swift: 数组无序排列,自定义模型去重,冒泡排序

作者: 灯红酒绿映不出的落寞 | 来源:发表于2019-04-29 14:11 被阅读0次

前言:在开发过程中,不可避免会对一些基本类型做特殊处理,本文今天主要列举三种模型处理

1.数组无序排列

// 数组无序排列
    public func zmShuffle() -> Array {
        var list = self
        for index in 0...list.count {
            let newIndex = Int(arc4random_uniform(UInt32(list.count-index))) + index
            if index != newIndex {
                list.swapAt(index, newIndex)
            }
        }
        return list
    }

swapAt 方法可以实现两个元素的位置交换,也是swift4新特性之一,详情可查看
最全的 Swift 4 新特性解析

2.去重(自定义模型,根据给定的规则进行去重)

//该函数的参数filterCall是一个带返回值的闭包,传入模型Element,返回一个E类型
    public func handleFilter<E: Equatable>(_ filterCall: (Element) -> E) -> [Element] {
        var temp = [Element]()
        for model in self {
            //调用filterCall,获得需要用来判断的属性E
            let identifer = filterCall(model)
            //此处利用map函数 来将model类型数组转换成E类型的数组,以此来判断
            if !temp.map( { filterCall($0) } ).contains(identifer) {
                temp.append(model)
            }
        }
        return temp
    }

去重函数理解起来比较简单,就是传入指定模型,通过指定模型,去重,生成新的数组

3.冒泡排序

// 根据函数返回的Int,去区分,可使用在字符串根据count排序,或者int类型排序
public func bubbleSort(_ filterCall: (Element) -> Int) -> [Element] {
        var temp: [Element] = self
        for i in 0...self.count - 1 {
            for j in (i...self.count - 1).reversed() {
                // rs 必须写到内循环里边
                let rs = filterCall(temp[i])
                let js = filterCall(temp[j])
                if rs > js {
                    let t = temp[i]
                    temp[i] = temp[j]
                    temp[j] = t
                }
            }
        }
        return temp
    }

相关文章

  • Swift: 数组无序排列,自定义模型去重,冒泡排序

    前言:在开发过程中,不可避免会对一些基本类型做特殊处理,本文今天主要列举三种模型处理 1.数组无序排列 swapA...

  • 数组排序去重

    冒泡排序 sort排序 数组去重

  • 冒泡排序

    冒泡排序同样是将数组分区给有序区和无序区,冒泡排序的每一轮都是将无序数组的最小(或最大)值冒泡到有序数组中, //...

  • 冒泡排序(bubble sort)

    冒泡排序也叫起泡排序,一般用于对无序数组进行排序;同时冒泡算法属于稳定排序,也具备原地算法特征 假设给定一个无序数...

  • 双线程冒泡排序算法

    双线程冒泡排序算法是对冒泡排序的优化,对冒泡排序加入了另外一个线程。 冒泡排序可以从数组的第0个元素开始排列,同样...

  • PHP的常用算法

    1、冒泡排序 2、快速排序 3、二分查找 假设数组是升序排列。

  • 一维数组

    一维数组通常用于数组的查找和排序 排序 1:倒序输出 2:升序or降序排列冒泡排序法 查找

  • js 各种算法

    数组排序 冒泡排序 选择排序(跟冒泡排序的思维有点像,只是一直跟最后一个比,这样一轮下来,就排完序了。) 数组去重...

  • 2019-12-02

    swift 模型数组 按照某一属性重新排序

  • 四种简单的排序算法(Java实现)

    1.冒泡排序 冒泡排序是相邻的数组元素相比较,需比较【数组长度-1】轮。 若需升序排列(第一轮最大值在数组的末尾)...

网友评论

      本文标题:Swift: 数组无序排列,自定义模型去重,冒泡排序

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