PHP版插入排序法

<?php
	// 插入排序法函数
	function insertion_sort(&$array) {
		$array_length = count($array); // 数组的长度
		
		// 进行数组排序,视第一个数组元素属于一个有序的数组。
		for ($i = 1; $i < $array_length; $i++) {
			$inserted_value = $array[$i]; // 待插入的数组元素
			$inserted_index = $i - 1; // 待插入的位置
			
			// 当$inserted_value前面还有其他数组元素并且值比它小的时候
			while (($inserted_index >= 0) && ($inserted_value < $array[$inserted_index])) {
				$array[$inserted_index + 1] = $array[$inserted_index]; // $inserted_value的前一个数组元素被后移
				$inserted_index--; // 待插入的位置递减变化
			}
			
			// 当$inserted_index的值发生了变化才进行插入操作
			if (($inserted_index + 1) != $i) {
				// 找到了$inserted_value的正确位置,插入该元素。
				$array[$inserted_index + 1] = $inserted_value;
			}
		}
	}
	
	// 数组打印函数
	function print_array($array) {
		foreach ($array as $key => $value) {
			echo "\$array[$key] = $value <br />";
		}
	}
	
	// 初始化数组
	$array = array(1, -1, 3, 3, 2, 9, -10, 7, 6, 5);

	// 调用函数
	insertion_sort($array);
	print_array($array);
	
	/* 输出
	$array[0] = -10 
	$array[1] = -1 
	$array[2] = 1 
	$array[3] = 2 
	$array[4] = 3 
	$array[5] = 3 
	$array[6] = 5 
	$array[7] = 6 
	$array[8] = 7 
	$array[9] = 9
	*/
?>

你可能感兴趣的:(PHP,插入排序法)