`
dcj3sjt126com
  • 浏览: 1871731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • C
阅读更多

希尔排序

 

选择排序

 

插入排序

 

冒泡排序   百度百科

 

快速排序

 

归并排序

 

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>';
?>

 

分享到:
评论

相关推荐

    十大经典排序算法(动图演示) - 一像素 - 博客园.mhtml

    通过学习十大经典排序算法(动图演示),你可以了解C语言中的排序方法,对C语言的程序设计会有很大帮助,有助于今后的工作和学习

    常用排序算法的动态演示系统

    本系统提供了一个交互式的排序算法演示系统,用户可以通过选择不同的排序算法按钮来选择不同的排序算法,并实时地观察排序过程。同时,我们还提供了一个详细的排序算法实现过程,帮助用户更好地理解排序算法的原理和...

    常用排序算法java演示

    在“常用排序算法java演示”中,这些算法可能会通过图形化的方式展示其排序过程,帮助理解每一步的变化,这对于学习和教学是非常有益的。图形演示可以直观地看到数据如何在排序过程中移动,有助于加深对算法的理解。...

    排序算法演示小程序

    在这个"排序算法演示小程序"中,我们可以看到六种经典的排序算法被实现和演示:交换排序、快速排序、插入排序、堆排序、选择排序以及希尔排序。这些算法在不同的场景下各有优势,理解它们的工作原理和性能特性对于...

    c#各种排序算法动态图形演示-数据结构经典算法动态演示

    "数据结构经典算法动态演示"这部分内容可能是通过图形化方式帮助学习者直观地理解每个排序算法的过程,这种可视化教学方法能帮助开发者更好地把握算法逻辑,加深对算法运行效率的理解,对于初学者来说尤其有益。...

    多种排序算法的动态演示

    本资源“多种排序算法的动态演示”聚焦于展示不同排序算法的工作原理,通过动态的方式帮助学习者更好地理解和掌握这些算法。 1. **冒泡排序**:是最基础的排序算法之一,通过重复遍历数组,比较相邻元素并交换顺序...

    c#排序算法的动态演示系统

    本系统专注于C#排序算法的动态演示,旨在通过直观的方式帮助开发者理解和掌握各种排序算法的工作原理。下面将详细探讨这个系统的特点、功能以及涉及的排序算法。 一、系统概述 "C#排序算法的动态演示系统"是一个...

    排序算法演示程序

    在本"排序算法演示程序"中,用户可以在Windows平台上直观地观察和理解各种排序算法的工作原理。通过运行sound-of-sorting-0.6.5.exe这个可执行文件,我们可以体验到包括但不限于冒泡排序、插入排序、选择排序、快速...

    各种排序算法的FLASH演示

    这些Flash演示对于初学者来说尤其有价值,因为它们以动态、可视化的方式展示了排序算法的工作原理,有助于理解和记忆。通过观看这些演示,你可以深入理解每种算法的时间复杂度、空间复杂度以及适用场景,从而在实际...

    应该掌握的6大排序算法的动画演示

    本资源提供了六种经典的排序算法的动画演示,帮助程序员直观地理解这些算法的工作原理,提高编程技能。以下是对这六大排序算法的详细解释: 1. **冒泡排序(Bubble Sort)** 冒泡排序是最简单的排序算法之一,通过...

    排序算法实现与演示系统

    排序算法实现与演示系统任务说明书,提供操作:选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序。

    mfc排序算法动态演示

    mfc编写的排序算法动态柱状图演示,单步或者自动,并且可以进行比较

    C#排序算法的动态演示过程

    本话题主要涉及五种经典的排序算法,它们在C#语言环境下的动态演示过程:简单选择排序、改进冒泡排序、直接插入排序、希尔排序以及堆排序。这些算法在处理大量数据时的效率和性能差异,可以通过动态演示得到直观的...

    排序算法演示

    这里我们将深入探讨五种经典的排序算法:插入排序、归并排序、快速排序、冒泡排序和选择排序,这些算法都在"排序算法演示"项目中有所体现。 1. **插入排序**: 插入排序是一种简单直观的排序算法。它的工作原理是...

    MFC排序算法演示

    **MFC排序算法演示**是基于Microsoft Foundation Class (MFC) 库的一个项目,它用于展示和实践多种经典的排序算法。MFC 是微软为Windows应用程序开发提供的C++类库,它封装了许多Windows API,简化了窗口、对话框、...

    经典排序算法动画演示文件

    排序算法动画演示文件是学习和理解经典算法的绝佳资源,特别是对于那些准备面试的人来说,它们是必备的。这些动画演示以直观明了的方式展示了冒泡排序、选择排序、快速排序等多种经典算法的工作原理和执行过程。通过...

    排序算法mfc动态演示

    在这个"排序算法MFC动态演示"项目中,开发者可能已经实现了上述一种或多种排序算法,并通过MFC创建了一个交互式的界面,用户可以输入数据,选择不同的排序算法,然后观察排序过程的实时变化。这样的应用对于教育、...

    七种排序算法动态演示软件

    描述中的“七种排序算法动态演示软件”是一个用于教育和学习的工具,用户可以手动输入数据,观察每种排序算法的执行过程,这有助于理解各种排序算法的内部机制和性能特点。软件基于WPF(Windows Presentation ...

    排序算法动态演示

    "排序算法动态演示"是一个基于对话框的应用程序,它通过可视化的方式帮助用户理解各种排序算法的工作原理。MFC(Microsoft Foundation Classes)是微软提供的一个C++库,用于构建Windows应用程序,包括GUI(图形用户...

Global site tag (gtag.js) - Google Analytics