• swift版本的快排和归并排序


    class SortClass: NSObject {
        func quickSort(inout array:[Int]){
            self.quick(&array, left: 0, right: array.count-1)
        }
        
        func quickMain(inout array:[Int],var left:Int,var right:Int)->Int{
            var srcLeft=array[left]
            while(left<right){
                while(left<right&&array[right]>=srcLeft){
                    right--
                }
                array[left]=array[right]
                
                while(left<right&&array[left]<=srcLeft){
                    left++
                }
                array[right]=array[left]
            }
            array[left]=srcLeft
            return left
        }
        
        func quick(inout array:[Int],var left:Int,var right:Int){
            if(left<right){
                var middle=self.quickMain(&array, left: left, right: right)
                self.quick(&array, left: left, right: middle-1)
                self.quick(&array, left: middle+1, right: right)
            }
        }
        
        func mergerSort(inout array:[Int]){
            var tempArray=[Int](count: array.count, repeatedValue: 1)
            self.merger(&array, tempArray: &tempArray, left: 0, right: array.count-1)
        }
        
        func merger(inout array:[Int],inout tempArray:[Int],var left:Int,var right:Int){
            if(left<right){
                var middle=(left+right)/2
                self.merger(&array, tempArray: &tempArray, left: left, right: middle)
                self.merger(&array, tempArray: &tempArray, left: middle+1, right: right)
                self.mergerMain(&array, tempArray: &tempArray, leftStart: left, leftEnd: middle, rightStart: middle+1, rightEnd: right)
            }
        }
        
        func mergerMain(inout array:[Int],inout tempArray:[Int],var leftStart:Int,var leftEnd:Int,var rightStart:Int,var rightEnd:Int){
            var index=leftStart
            var recoderLeftStart=leftStart;
            while(leftStart<=leftEnd&&rightStart<=rightEnd){
                if(array[leftStart]<=array[rightStart]){
                    tempArray[index++]=array[leftStart++]
                }else{
                    tempArray[index++]=array[rightStart++]
                }
            }
            
            while(leftStart<=leftEnd){
                tempArray[index++]=array[leftStart++]
            }
            
            while(rightStart<=rightEnd){
                tempArray[index++]=array[rightStart++]
            }
            
            for(var i=recoderLeftStart;i<=rightEnd;i++){
                array[i]=tempArray[i]
            }
        }
    }

    学习了swift总体感觉不错.吐嘈两点,1编码的时候智能提示不友好,2希望后续版本能有方法访问权限修饰关键字添加。

  • 相关阅读:
    图像处理检测方法 — SIFT和SURF
    代码题(31)— 有效的括号、括号生成、最长有效括号
    代码题(30)— 二叉搜索树、二叉树的最近公共祖先
    【angularjs】使用angular搭建项目,实现隔行换色
    【css3】nth-child
    【window】Windows10下为PHP安装redis扩展
    【css】3d导航效果
    【angularjs】使用angularjs模拟淘宝首页-淘宝头条滚动效果
    【js】横/纵向无缝滚动
    【angularjs】使用ionic+angular 搭建移动端项目,字体适配
  • 原文地址:https://www.cnblogs.com/learnWindowsPhone/p/4064552.html
Copyright © 2020-2023  润新知