冒泡排序(Bubble Sort)

文章作者:中山市飞娥软件工作室「Feiesoft.com」  浏览次数:1967 次  更新日期:2013-11-12

冒泡排序(Bubble Sort)

冒泡排序就是把数组中小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间,冒泡排序是一种稳定排序算法。

   56  38  35  55  94  73  62  99  - 原始数组,长度 = 8
.... 38  56  35  55  94  73  62  99  - 第 1 次调换 56 - 38
.... 38  35  56  55  94  73  62  99  - 第 2 次调换 56 - 35
.... 38  35  55  56  94  73  62  99  - 第 3 次调换 56 - 55
.... 38  35  55  56  73  94  62  99  - 第 4 次调换 94 - 73
.... 38  35  55  56  73  62  94  99  - 第 5 次调换 94 - 62
   38  35  55  56  73  62  94  99  - 第 1 遍,内循环  8 次,交换 5 次,此遍中 94 冒泡↑
.... 35  38  55  56  73  62  94  99  - 第 6 次调换 38 - 35
.... 35  38  55  56  62  73  94  99  - 第 7 次调换 73 - 62
   35  38  55  56  62  73  94  99  - 第 2 遍,内循环  7 次,交换 2 次,此遍中 73 冒泡↑
   35  38  55  56  62  73  94  99  - 第 3 遍,内循环  6 次,交换 0 次,已经排序好
function BubbleSort (&$arr,$len) { //冒泡排序算法
	$swap = true;
	for ($i = 0; ($i < $len - 1) && ($swap); $i++) {
		$swap = false;
		for ($j = 0; $j < $len - $i - 1; $j++) { //从前往后扫描,每一遍调换之后,将未排序好中的最大数放在未排序段的最后(冒泡↑)
			if ($arr[$j+1] < $arr[$j]) { //如果 后数 < 前数 调换位置
				$max = $arr[$j]; 
				$arr[$j] = $arr[$j+1];
				$arr[$j+1] = $max;
				$swap = true;
			}
		}
	}
}