Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active April 6, 2017 14:19
Show Gist options
  • Save KentarouKanno/f2d1e6db1c0c37d6cbe3 to your computer and use it in GitHub Desktop.
Save KentarouKanno/f2d1e6db1c0c37d6cbe3 to your computer and use it in GitHub Desktop.
Array sort

Array sort

★ クロージャで第一引数と第二引数を比較してソートする。

let numList = [1 ,2 ,3 ,4 ,5]

let value = numList.sorted{(a:Int, b:Int) -> Bool in
    return a > b
}

value
//=> value = [5 ,4 ,3 ,2 ,1]

// ※ 上記を省略したコード
let value1 = numList.sorted{$0 > $1}

★ Dictionaryのsort

// Dictionaryはタプルとしてsortの中で扱われる

var dictionary = [10: 1, 8: 2, 3: 3, 4: 7]

// タプルの0番目(key)を比較している
var sortDict = dictionary.sorted{ $0.0 < $1.0 }

sortDict
//=> [(3, 3), (4, 7), (8, 2), (10, 1)]

★ sorted(by:)はソートした配列を返す

var a = [5, 3, 1, 4, 2]

var b = a.sorted(by: <)
//=> b = [1, 2, 3, 4, 5]

var c = a.sorted(by: >)
//=> c = [5, 4, 3, 2, 1]

★ sort(by:)は配列自体をソートする

var a = [5, 3, 1, 4, 2]
a.sort(by: <)
//=> a = [1, 2, 3, 4, 5]
var b = [5, 3, 1, 4, 2]
var sign: (Int, Int) -> Bool = (<)

b.sorted(by: sign)
//=> [1, 2, 3, 4, 5]

★ 偶数を順番に並べた後に、奇数を順番に並べる

let intArray = [1, 2, 3, 4, 5, 10, 20, 30, 111, 112]
let sortEvenArray = intArray.sorted() {
    // 偶数を順番に並べた後に、奇数を順番に並べる
    $0 % 2 == 0 && $1 % 2 != 0
}

sortEvenArray
//=> [2, 4, 10, 20, 30, 112, 1, 3, 5, 111]

★ structのプロパティでソートする

struct A {
    var a: String = ""
    
    init(_ a: String) {
        self.a = a
    }
}

var b = [A("b"),A("d"),A("a"),A("c")]

let c = b.sorted {
    $0.a < $1.a
}

c
//=> [A(a: "a"), A(a: "b"), A(a: "c"), A(a: "d")]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment