排序算法(php学习整理篇)

来源:互联网 发布:matlab 图像融合算法 编辑:程序博客网 时间:2024/05/17 08:39

一、插入排序

1.1 直接插入排序

基本思想:每次将一个待排序额记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序。


代码测试:

$sort = [39,42];$arr = [22,10,9,50];foreach($arr as $v){    $j = count($sort) - 1;    while($j >= 0)    {        if ($sort[$j] < $v)        {            $sort[$j+1] = $v;               break ;        }        $sort[$j+1] = $sort[$j];        $sort[$j] = $v;        $j--;    }}var_dump($sort);/* array (size=6)  0 => int 9  1 => int 10  2 => int 22  3 => int 39  4 => int 42  5 => int 50 */

1.2 希尔排序(待续。。。)

二、选择排序

2.1 简单选择排序(Simple Selection Sort)

基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。


代码测试:

$arr = [3,4,2,9,5,1,8];$count = count($arr);for($i = 0;$i < $count; $i++){    // echo $arr[$i] . ':';    for($j = $i+1; $j < $count; $j++)    {        // echo $arr[$j] . ' ';        if($arr[$i] > $arr[$j])        {            $temp = $arr[$i];            $arr[$i] = $arr[$j];            $arr[$j] = $temp;        }    }    // echo '<br>';}var_dump($arr);/* array (size=7)  0 => int 1  1 => int 2  2 => int 3  3 => int 4  4 => int 5  5 => int 8  6 => int 9 */

2.2 堆排序(待续。。。)

三、交换排序

3.1 冒泡排序

基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

代码测试:

$arr = [3,4,2,9,5,1,8];$c = count($arr);for($i = 0; $i < $c; $i++){    for($j = $i; $j < $c; $j++)    {        if ($arr[$i] > $arr[$j])        {            $temp = $arr[$i];            $arr[$i] = $arr[$j];            $arr[$j] = $temp;        }    }}var_dump($arr);/* array (size=7)  0 => int 1  1 => int 2  2 => int 3  3 => int 4  4 => int 5  5 => int 8  6 => int 9 */



0 0
原创粉丝点击