数组冒泡排序

冒泡算法对于很多人来说应该很熟悉了,我是文科出身,所以还是有必要学一下的。

数组排序有很多种算法。在冒泡算法中,较小的数组元素朝数组顶部逐渐冒上来,就像水中气泡上升一样,而较大的数组元素朝数组底部逐渐沉下去。这种算法用嵌套循环对整个数组数次遍历,每次遍历都比较数组中相邻的一对元素,如果它们以升序排列(或者值相等),那么它们的位置不变,否则交换它们的位置。看下面代码。

package {
	public class Array2 {
		public static function bubbleSort(array : Array) : void { //冒泡排序
			for (var i : uint = 0;i < array.length - 1; i++) { //外层循环
				for (var j : uint = 0;j < array.length - i - 1; j++) { //内层循环
					if (array[j] > array[j + 1]) {
						var temp : uint = array[j];
						array[j] = array[j + 1];
						array[j + 1] = temp;
					}
				}
				print(i + 1, array);
			}
		}
		public static function print(time : uint,array : Array) : void {
			trace("第" + time + "次排序:");
			trace(array.toString() + "  ");
		}
	}
}

用法很简单,如下所示。

var array:Array = new Array(4,7,5,3,9,0);
Array2.bubbleSort(array);
/*
第1次排序:
4,5,3,7,0,9  
第2次排序:
4,3,5,0,7,9  
第3次排序:
3,4,0,5,7,9  
第4次排序:
3,0,4,5,7,9  
第5次排序:
0,3,4,5,7,9 
*/

在冒泡算法中,外层循环的次数即是该算法的次数。

评论: 1 | 引用: 0 | 查看次数: -
引用sungwn[2009-12-04 12:57 AM | 无网站 | 无Mail | 59.42.170.245 | 删除 | 取消审核 | 回复回复]
[正在加载评论信息,请稍候...]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭