Python版本:
__author__ = 'hujun' def subsort(unsortedList,low,high): while low < high: key = unsortedList[low] while low < high: while low < high and key <= unsortedList[high] : high -= 1 while low < high and key > unsortedList[high] : unsortedList[low] = unsortedList[high] low += 1 unsortedList[high] = unsortedList[low] unsortedList[low] = key return low def quicksort(unsortlist,low,high): if(low < high): keyindex=subsort(unsortList,low,high) quicksort(unsortList,low,keyindex) quicksort(unsortList,keyindex+1,high) unsortList = [5, 9, 4, 3, 2, 8, 7, 6, 1, 10] quicksort(unsortList, 0, len(unsortList)-1) print(unsortList) |
Scala版本:
package cn.com.test /** * Created by hujun on 2014/7/5. */ object QuickSort { def subSort(unsortList:Array[Int],start:Int,end:Int):Int={ val key=unsortList(start) // 由于scala函数中形参都是val类型的变量,因此不能修改其值 var low=start var high=end while(low < high){ while (low < high && key <= unsortList(high)){ high=high-1 } while (low < high && key > unsortList(high)){ unsortList(low) = unsortList(high) low+=1 unsortList(high)=unsortList(low) } unsortList(low)=key } low } def quicksort(unsortList:Array[Int],low:Int,high:Int):Unit={ //这是递归的条件 if(low<high){ val key_index=subSort(unsortList,low,high) quicksort(unsortList,low,key_index) quicksort(unsortList,key_index+1,high) } } def main (args: Array[String]) { // 定义List val unsort:Array[Int]=Array(5,9, 4, 3, 2, 8, 7, 6, 1, 10) quicksort(unsort,0,unsort.length-1) unsort.foreach(x=>print(x+" ")) } } |