[アルゴリズム]クイックソート


クイックソート

  • 再帰アルゴリズムを使用
  • に道を教える

  • pivot(基準)、要素をpivotと比較
  • pivotはleftより小さく、rightより大きい
  • left,右ループ
  • [left]+[pivot]+[right]戻り

  • インプリメンテーション


    Python

    def quick_sort(data):
    	if len(data) <= 1:
        	return data
            
        left, right = list(), list()
        
        pivot = data[0]
        
        for i in range(1, len(data):
        	if pivot > data[i]:
            	left.append(data[i])
            else:
                right.append(data[i])
        return quick_sort(left) + [pivot] + quick_sort(right)

    Swift

    func quickSort(_ data: [Int]) -> [Int] {
        
        if data.count <= 1 {
            return data
        }
        
        var left: [Int] = []
        var right: [Int] = []
        
        let pivot = data[0]
        
        for i in 1..<data.count {
            if pivot > data[i] {
                left.append(data[i])
            } else {
                right.append(data[i])
            }
        }
        return quickSort(left) + [pivot] + quickSort(right)
    }