您的位置:首页 > 理论基础 > 数据结构算法

数据结构练习:快速排序

2009-12-23 10:42 225 查看
今天看了一个快速排序的算法,感觉这个程序比较容易读懂,因此在这里记录一下。发现了一个比较容易理解的地方就是双向的进行比较,与冒泡和插入 和选择比较。快速排序思路是在头尾,设置两个指针,然后向中间移动。发现了两个指针所指的数能够改善排序的,则进行调换。 然后,再进行递归的调用。





由于这个东西不是什么新鲜的东西,只是感觉到这个做法比较容易记住,网上已经很多相同的东西,只是想把记录一下(误导就别怪了呵呵)。对学习flash 朋友来讲,这个无疑是一个需要长期去理解和深入的算法。故此要是希望从事这行职业,这些数据结构是一个补充你的理论的东西。

至于 算法应用在哪里?现在还在探索当中,要是应用到了那些开发当中,也可以告诉我一声。

package 
{
    import flash.display.Sprite;
	public class Main extends Sprite
	{
        private var array:Array=[1,2,5,8,3,4,0,6,7,9];
		public function Main()
		{
			quickSort(0,9);
			trace(array);		
		}
		
		//快速排序,要领在数组两头进行递增 和递减的进行比较
		private function quickSort(begin:int,end:int):void
		{
			var p:int=begin;
			var q:int=end;
			var mid:int=array[p];//用于参考的第一个数
			
			//当右边大于左边
			while(p<q)
			{
				while(array[p]>mid)p++;//数组左边的数<参考的第一个数
				while(array[q]<mid)q--;//右边大于参考的第一个数
				
				//发现更加好的就调换位置
				if(p<=q)
				{
					var temp:Number=array[p];
					 array[p]=array[q];
					 array[q]=temp;
				}
			}
			//进行递归
			if(q>begin)quickSort(begin,q-1);//继续对前部分进行排序
			if(p<end)quickSort(p+1,end);//对后部分进行排序
		}
		
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: