每日算法1:快速排序
2017-03-17 13:09
176 查看
目标:排序
算法思路分析:
思想: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)
算法思路分析:
思想: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)
相关文章推荐
- 【每日算法】快速排序
- 算法记录:二进制快速排序
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- 读书笔记 算法导论 快速排序 QuickSort 使用最后一个元素作为pivot
- [每周一算法]快速排序
- 快速排序 php实现 算法学习
- 快速排序的C#实现以及,算法导论上之后一个习题的思考
- 白话经典算法系列之六 快速排序 快速搞定
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- C#算法-------(五)快速排序
- java基础知识之 算法 【冒泡排序】【快速排序】
- C#算法-------(四)快速排序
- 【经典算法】快速排序
- 快速排序与快速选择算法(quick sort and quick select algorithm)
- 算法导论 第七章快速排序与随机快速排序
- 算法与数据结构——快速排序 Quick Sort
- c#与算法--快速排序
- 算法复习:快速排序
- 【快速排序】算法实现
- 算法的独家记忆--快速排序