当前位置:首页 > 开发 > 编程语言 > 算法 > 正文

6种经典排序算法的舞蹈版演示,排序不再难理解了

发表于: 2013-03-01   作者:dcj3sjt126com   来源:转载   浏览次数:
摘要: 希尔排序   选择排序   插入排序   冒泡排序   百度百科   快速排序   归并排序   php版 BUBBLESORT(A) for i <- 1 to length[A] do for j <- length[A] downto i + 1 do if A[j]<A[

希尔排序

 

选择排序

 

插入排序

 

冒泡排序   百度百科

 

快速排序

 

归并排序

 

php版

BUBBLESORT(A)
for i <- 1 to length[A]
do for j <- length[A] downto i + 1
do if A[j]<A[j - 1]
then exchange A[j] <-> A[j-1]

 

 

<?php
	/*
	 * point one: remember swap variable
	 * point two: remember inside loop size
	 */
	$arr = array(2,1,4,2,7);		//init a array variable
	$result = bubbling_ort($arr);		//invoke a function and get result

	echo '<pre>';				//output format
	print_r($result);			//output result
	echo '</pre>';

	function bubbling_sort($arr){		//function start
		$size = count($arr)-1;	//need to loop size is total length - 1
		for ($i = 0; $i < $size; $i++) {		//outside loop
			for ($j = 0; $j < $size-$i; $j++) { //inside loop
				if ($arr[$j] < $arr[$j+1]) {	//compare big or small
					$temp      = $arr[$j];		//start swap
					$arr[$j]   = $arr[$j+1];
					$arr[$j+1] = $temp;
				}
			}
		}
		return $arr;
	}
?>

 

<?php
	/*
	 * point one: remember swap variable
	 * point two: remember inside loop size
	 */
	$arr = array(2,1,4,2,7);		//init a array variable
	$result = bubbling_sort($arr);		//invoke a function and get result

	echo '<pre>';				//output format
	print_r($result);			//output result
	echo '</pre>';

	function bubbling_sort($arr){		//function start
		$size = count($arr)-1;	//need to loop size is total length - 1
		for ($i = 0; $i < $size; $i++) {		//outside loop
			for ($j = 0; $j < $size-$i; $j++) { //inside loop
				if ($arr[$j] < $arr[$j+1]) {	//compare big or small
					//swap two number without temp variable
					$arr[$j] = $arr[$j+1] + $arr[$j];
					$arr[$j+1] = $arr[$j] - $arr[$j+1];
					$arr[$j]   = $arr[$j] - $arr[$j+1];
				}
			}
		}
		return $arr;
	}
?>

 

<?php
function quickSort($arr)
{
	$len = count($arr);
	if($len <= 1) {
		return $arr;
	}

	$key = $arr[0];			
	$left_arr = array();
	$right_arr = array();
	for($i=1; $i<$len; $i++)
	{
		if($arr[$i] <= $key)
		{
			$left_arr[] = $arr[$i];
		}
		else
		{
			$right_arr[] = $arr[$i];
		}
	}
	$left_arr = quickSort($left_arr);
	$right_arr = quickSort($right_arr);
	return array_merge($left_arr, array($key), $right_arr);
}

$arr = array(49,38,65,97,76,13,27);
echo '<pre>';
print_r(quickSort($arr));
echo '</pre>';
?>

 

<?php
function quick_sort($arr)
{
	_quick_sort($arr,0,(count($arr)-1));
	return $arr;
}
function _quick_sort(&$arr,$i,$j)
{
	$pivot = $arr[$i];
	$_i = $i;
	$_j = $j;
	while($i<$j)
	{
		while($arr[$j]>=$pivot && $i<$j) $j--;
		if($i<$j)
		{
			$arr[$i] = $arr[$j];
			$i++;
		}
		while($arr[$i]<=$pivot && $i<$j) $i++;
		if($i<$j)
		{
			$arr[$j] = $arr[$i];
			$j--;
		}
	}
	$arr[$i]=$pivot;
	if($_i<$i-1)
	{
		_quick_sort($arr,$_i,$i-1);
	}
	if($_j>$i+1)
	{
		_quick_sort($arr,$i+1,$_j);
	}
}

$just = array(49,38,97,76,13,27);
print_r( quick_sort($just) );

 

<?php

function selection_sort($array){
	$count = count($array);
	for ($i=0;$i<$count-1;$i++){
		/* find the minest */
		$min = $i;
		for ($j=$i+1;$j<$count;$j++){
			//由小到大排列
			if ($array[$min]>$array[$j]) { //表明当前最小的还比当前的元素大
				$min = $j;//赋值新的最小的
			}
		}

		/* swap $array[$i] and $array[$min] 即将当前内循环的最小元素放在$i位置上*/
		$temp = $array[$min];
		$array[$min] = $array[$i];
		$array[$i] = $temp;
	}
	return $array;
}
$old_array = array(3,4,1,6,5,2);
$new_array = selection_sort($old_array);

echo '<pre>';
print_r($new_array);
echo '</pre>';
?>

 

6种经典排序算法的舞蹈版演示,排序不再难理解了

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
权当复习,以备引用(理论来源于:http://www.zsqz.com/jsbase/Suanfa/index.html?defination.htm,
经典排序算法( Java 版) 权当复习,以备引用(理论来源于:http://www.zsqz.com/jsbase/Suanfa/in
权当复习,以备引用(理论来源于: http://www.zsqz.com/jsbase/Suanfa/index.html?defination.htm,
权当复习,以备引用(理论来源于:http://www.zsqz.com/jsbase/Suanfa/index.html?defination.htm,
1、冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素
转自 还有多少青春可以挥霍 动画图解 :http://student.zjzk.cn/course_ware/data_structure/web/fla
1、冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素
1、冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素
1、冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素
1、冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号