插入排序算法实现(PHP语言)

插入排序算法实现(PHP语言)

//插入排序算法(php)
//author:Hengda
//$arr 待排序数组
//$mode false 正序,true倒序
function insertionSort( $arr, $mode ){
     
	//数组元素数
	$len = count( $arr );
	//依次向后遍历每个元素,然后依次将此元素与后续元素作对比,比其大或者小的值向后移动,最后将当前元素填入空缺中
	for( $i = 1; $i < $len; $i++ ){
     
		$temp = $arr[ $i ];
		//依次向前比较并向后移动比其大或者小的
		for( $j = $i-1; $j >=0 && ( $mode ? $arr[ $j ] < $temp : $arr[ $j ] > $temp ); $j-- ){
     
			//向后移动
			$arr[ $j + 1 ] = $arr[ $j ];
		}
		//填充空缺
		$arr[ $j + 1 ] = $temp;
	}
	return $arr;
}

测试排序

//生成$n个随机数组成的数组
//author:Hengda
//$n随机数个数
function makeData( $n ){
     
	$arr = Array();
	while( $n-- ){
     
		$arr[] = mt_rand( 0, $n );
	}
	return $arr;
}

//测试
//生成测试数据
$arr = makeData( 1000 );
echo "排序".count( $arr )."个数:";
//打印原始数据
echo "原始数据:".implode( ',', $arr )."
"
; //排序 echo "
正序排序:
"
; $stime = microtime(true); $arr1 = insertionSort( $arr, false ); $etime = microtime(true); echo "排序耗时:".( $etime - $stime )." 秒"."
"
; //打印 echo "排序结果:".implode( ',', $arr1 )."
"
; //排序 echo "
倒序排序:
"
; $stime = microtime(true); $arr1 = insertionSort( $arr, true ); $etime = microtime(true); echo "排序耗时:".( $etime - $stime )." 秒"."
"
; //打印 echo "排序结果:".implode( ',', $arr1 )."
"
;

排序结果

插入排序算法实现(PHP语言)_第1张图片

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