PHP的基本排序算法
1 冒泡排序
<?php /** * 冒泡排序(从小到大) * 基本思想:两两比较相邻记录,一次循环确定一个数 * 在所有的排序算法中是最慢的,尤其当数据量较大的时候,数据小体现不出来 */ $arr = array(21, 95, 82, 15, 36); function bubbleSort(&$arr) { $num = count($arr); //元素数据个数 for($i = 0; $i < $num-1; ++$i) { for($j = 0; $j < $num-1-$i; ++$j) { if($arr[$j] > $arr[$j+1]) { //如果前面的数大于后面的数,交换位置 $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } } bubbleSort($arr); //调用函数 echo '<pre>'; var_dump($arr); //输出排序后的数组
2 选择排序
<?php /** * 选择排序(从小到大) * 基本思想:选择,顾名思义,先选择(找到)合适的数据,然后进行交换。 * 对于本例,首先在先假设第0个元素为最小值,然后与第1到第n-1个数据依次比较,其中最小的值与第0个元素的值进行交换 */ $arr = array(21, 95, 82, 15, 36); function selectSort(&$arr) { $num = count($arr); //元素数据个数 for($i = 0; $i < $num-1; ++$i) //大循环的次数 { $min_value = $arr[$i]; //既然要先检索出最小值,这个最小值怎么确定?我们先假设一个值,这个值是有规律可循的 $min_index = $i; for($j = $i+1; $j <= $num-1; ++$j) { if($min_value > $arr[$j]) //如果假定的最小值还大于后续其他数据,则交换位置 { $min_value = $arr[$j]; $min_index = $j; } } //每一次循环结束都会确定一个本次循环真正的最小值 $arr[$min_index] = $arr[$i]; //真正的最小值所在位置替换为假定的最小值 $arr[$i] = $min_value; //假定的最小值替换为真正的最小值 } } selectSort($arr); //将需要排序的数组传入 echo '<pre>'; var_dump($arr); //输出排序后的数组
3 插入排序
<?php /** * 选择排序(从小到大) * 基本思想:类似扑克插牌,以一个(多个)数据为基准,往后每摸一张牌,与以前的数据依次比较大小,然后有序插入 */ $arr = array(21, 95, 82, 15, 36); $arr = array(21, 14); function insertSort(&$arr) { $num = count($arr); for($i = 1; $i < $num; ++$i) { //我们知道,数组的第0个元素是不用进行排序的,所以需要给$num-1个数据进行排序 $insert_value = $arr[$i]; //先把需要插入的数据记录下来 $compare_index = $i-1; //先假设与插入数据比较的数据的下标为前一个元素的下标 while($arr[$compare_index] > $insert_value && $compare_index >= 0) //如果,比较的数据大于插入的数据 { $arr[$compare_index + 1] = $arr[$compare_index]; //把比较的元素放后面,此时compare_index+1和compare_index的位置为同一值 --$compare_index; //比较的元素下标-1 } $arr[$compare_index + 1] = $insert_value; //当推出循环,证明比较的数据小于插入的数据,所以,$compare+1位置就是插入位置 } } insertSort($arr); //传入数组进行排序 echo '<pre>'; var_dump($arr); //输出数组
PHP的基本排序算法的更多相关文章
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- 排序算法----基数排序(RadixSort(L))单链表智能版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- 常见排序算法(附java代码)
常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...
- 几大排序算法的Java实现
很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...
- 排序算法----基数排序(RadixSort(L,max))单链表版本
转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...
- 排序算法汇总(C/C++实现)
前言: 本人自接触算法近2年以来,在不断学习中越多地发觉各种算法中的美妙.之所以在这方面过多的投入,主要还是基于自身对高级程序设计的热爱,对数学的沉迷.回想一下,先后也曾参加过ACM大大小小的 ...
- 用Java来写常见的排序算法
随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * ...
- 模板化的七种排序算法,适用于T* vector<T>以及list<T>
最近在写一些数据结构以及算法相关的代码,比如常用排序算法以及具有启发能力的智能算法.为了能够让写下的代码下次还能够被复用,直接将代码编写成类模板成员函数的方式,之所以没有将这种方式改成更方便的函数模板 ...
- 排序算法总结第二弹----冒泡排序---javascript描述
上篇博文总结了选择排序,这篇来看冒泡排序,接上篇. 冒泡排序思想:若是正再将一组数据升序排序, 第一趟:比较相邻的数据,当左侧值大于右侧值将他们进行交换,将较小值向前浮动,大值向后冒泡,直至比较到最后 ...
- 排序算法总结------选择排序 ---javascript描述
每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...
随机推荐
- 突袭HTML5之SVG 2D入门1 - SVG综述////////////////zzzzzzzz
以二次贝塞尔曲线的公式为例: js函数: //p0.p1.p2三个点,其中p0为起点,p2为终点,p1为控制点 //它们的坐标用数组表示[x,y] //t的范围是0-1 function qBerzi ...
- Linux操作系统备份之三:通过二进制拷贝(dd)方式实现Linux操作系统数据的备份
前面有两篇文章,<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>和<Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份& ...
- Eclipse 恢复删除的文件
这件事发生在,两周以前,那时我正在写LLT,补充完代码覆盖率.突然,我的代码呢,我的代码去哪里了?由于对Eclipse还不太熟悉,代码就则样被我从磁盘删掉了.然后火速给同事打电话,同事说如果删除了,而 ...
- 移植mbed到目标板
上一篇我们导出了mbed基本环境到mdk,根据实际目标还需要做些修改.手头的硬件是ebox平台,芯片STM32F103C8T6,调试器jlink,默认使用UART1. 导出时所选择的NUCLEO-F1 ...
- 几个js函数
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- python之编写购物车(第二天)
作业: 编写购物车 具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行 ...
- Don't make a promise when you are in Joy. Don't reply when you are Sad.Don't take decisions when you are Angry.Think Twice.Act Wise.
Don't make a promise when you are in Joy. Don't reply when you are Sad.Don't take decisions when you ...
- 通过jquery获取天气的方法
代码为: $.getScript('http://int.dpool.sina.com/iplookup/iplookup.php?format=js',function(_result){ if(r ...
- sql查看锁与解锁
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...
- 【转载】Tomcat崩溃事件
转载地址:http://www.blogjava.net/tedeyang/archive/2008/06/04/205740.html Tomcat崩溃事件 今天一大早产品一部项目经理就来找我,他们 ...