swift4でUIviewを内包した配列においてframeのx,yについて昇順で並び替える方法はどうすればよいでしょうか

viewcontrollerにおいて

var array = [UIView]()
func viewDidLoad() {
    for i in 0...8 {
        for n in 0...4 {
            let view = UIView(frame:CGRect(x: 3 * n, y: 3* i, width: 10, height: 10)
            view.tag = (Int(i) + 1) * 10 + (1 * Int(n) + 1)        
            self.array.append(view)
            self.view.addSubview(view)
        }
    } 
}

というコードを書いた後に

self.array[4].frame = self.allyArray[7].frame
self.array[7].frame = self.allyArray[4].frame

のようにUIviewが画面内で移動を繰り返すとします。

このような場合、array内のUIviewの並びがframeのyで昇順し、さらにxで昇順する場合どのようにすればよいでしょうか。

よろしくお願いいたします。