排序算法(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
- 排序算法(php学习整理篇)
- PHP常见排序算法整理学习
- php 排序算法整理
- 算法学习笔记:排序算法整理
- 有趣算法-堆排序学习整理
- 各种排序算法学习整理 C++实现
- 算法整理-排序(冒泡)
- 排序算法整理(一)
- 算法整理-排序(堆排序)
- 算法整理-排序(直接插入排序)
- PHP学习笔记——冒泡(起泡)排序算法
- php-学习笔记(整理)
- PHP排序函数整理
- 常见排序算法整理(二)----希尔排序,选择排序
- 常见排序算法整理(三)----归并排序、快速排序
- 归并排序算法(php)
- 算法学习(资料整理)
- 排序算法的整理(1)
- 在eclipse中启动tomcat后,context.xml中被自动还原的解决方法
- memcmp比较两个struct是否相等
- Python中的chr和ode函数
- STL中的string类(OJ常用部分)
- Android感应检测Sensor
- 排序算法(php学习整理篇)
- Charles使用
- 反射的相关教学
- 安全上下文
- 平衡二叉搜索树BST转换为双向链表
- 【7】汇编 DOS部分
- 指针数组VS指向数组的指针
- GYM 100090 A. After Two Hares(水~)
- 系统存在大量TIME_WAIT状态的连接解决方法。