scala数据结构和算法-04-快速排序实现

来源:互联网 发布:怎么创建app软件 编辑:程序博客网 时间:2024/06/05 10:21
package dataimport scala.collection.mutable.ListBufferimport scala.collection.mutable.ListBufferobject QuickSort {    def quickSort[T<% Ordered[T]](source:ListBuffer[T],left:Int,right:Int):ListBuffer[T]={    if(left==right)ListBuffer()    else{      val index=partition(source,left,right)      if(left==index){         if(right-index>=2){           quickSort(source,index+1,right)         }      }else if(right==index){        if(index-left>=2){          quickSort(source,left,index-1)        }      }else{        if(index-left>=2){          quickSort(source,left,index-1)        }        if(right-index>=2){          quickSort(source,index+1,right)        }      }           source    }  }    def partition[T<%Ordered[T]](source:ListBuffer[T],left:Int,right:Int):Int={      val cmp=source(left)      var leftIndex=left      var rightIndex=right      var direction=true;      while(leftIndex<rightIndex){        if(direction){          if(source(rightIndex)<cmp){             source(leftIndex)=source(rightIndex);            leftIndex+=1;            direction=(!direction);          }else{            if(leftIndex<rightIndex){              rightIndex-=1;            }          }        }        if(!direction){          if(source(leftIndex)>=cmp){            source(rightIndex)=source(leftIndex)            rightIndex-=1            direction=(!direction);          }else{            if(leftIndex<rightIndex){              leftIndex+=1;            }          }        }              }      source(leftIndex)=cmp;      leftIndex  }      def main(args: Array[String]): Unit = {    val source=ListBuffer(1,3,7,5,4,15,3,9,6,8,33,12,14,12,17,16,18);     println(quickSort(source,0,source.length-1).mkString(","))  }}

0 0
原创粉丝点击