zoukankan      html  css  js  c++  java
  • 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希望后续版本能有方法访问权限修饰关键字添加。

  • 相关阅读:
    (CSDN迁移)js中的判空
    (CSDN迁移) 输入一个链表,从尾到头打印链表每个节点的值
    (CSDN迁移) 替换字符串中的空格
    (CSDN迁移) Java路径获取
    Apache JMeter 做接口并发测试
    用Postman做接口测试
    高并发或高负载下的系统设计
    编译时异常与运行时异常的区别
    使用JUNIT进行单元测试
    hexo 博客如何更换电脑
  • 原文地址:https://www.cnblogs.com/learnWindowsPhone/p/4064552.html
Copyright © 2011-2022 走看看