每日算法1:快速排序

来源:互联网 发布:哲学家就餐问题c语言 编辑:程序博客网 时间:2024/06/10 09:02

目标:排序

算法思路分析:

思想:The Divide and Conquer  把问题分成若干个子问题,递归解决

具体:取中间数,把数组分为 [小于中间数的数组],[中间数],[大于中间数的数组],递归上步骤,直到数组不能再分割(数组长度为1)。

C语言实现:

as3实现:

//生成一个100长度以内的随机数组

var randomArr:Array=[]

var len:int=Math.ceil(100*Math.random())

for(var i:int=0;i<len;i++)

{

  randomArr.push(Math.ceil(100*Math.random()))

}
trace(randomArr.length)

//快速排序函数

function quickSort(arr:Array):void

{

if(arr.length<=1)  {
    if(arr.length==1)
      trace(arr[0])
    return

}

var leftArr:Array=[]

var rightArr:Array=[]

for(var i:int=1;i<arr.length;i++) {

if(arr[i]<arr[0])

leftArr.push(arr[i])

else rightArr.push(arr[i])

}
quickSort(leftArr)
trace(arr[0])
quickSort(rightArr)

}
//快速排序
quickSort(randomArr)





0 0
原创粉丝点击