PHP数组排序算法小结
PHP中对数组的元素进行排序,这个是很经常用到的,之前的项目中也有,而且对于几种排序我们都是用的是asort arsort 等PHP原生函数,没有自己去实现,所以就对一下的几个函数进行总结,这个会不断的进行补充,自己也可以好好的复习和总结。
/* * 插入排序(一维数组) * 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当的位置,使数列依然有序;直到待排序的数据元素全部插入完成为止。 */ function insertSort($arr){ if(!is_array($arr) ||count($arr)==0){ return $arr; } $count =count($arr); for($i=1;$i<$count;$i++){ if(isset($arr[$i])){ $tmp =$arr[$i];//获取后一个元素的值 $j =$i - 1;//获取前面的下标 while($arr[$j] >$tmp){//如果前面一个比后面一个大, 这里是从小到大 $arr[$j+1] =$arr[$j];//把小的元素和前面的对换,直到移动到合适的位置,在移动下一个 $arr[$j] =$tmp; $j--; } } } return $arr; } /* * 选择排序(一维数组) * 每一趟从待排序的数据元素中选出最小(最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 */ function selectSort($arr){ if(!is_array($arr) ||count($arr) == 0) { return $arr; } $count =count($arr); for($i=0;$i<$count;$i++){ $k =$i; for($j=$i+1;$j<$count;$j++){ if ($arr[$k] >$arr[$j]) $k =$j;//找出最小的 if ($k !=$i){ $tmp =$arr[$i]; $arr[$i] =$arr[$k]; $arr[$k] =$tmp; } } } return $arr; } /* * 冒泡排序(一维数组) * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反即进行交换,直到没有反序的数据元素为止 */ function bubbleSort($array){ $count =count($array); if ($count <= 0) { return false; } for($i=0;$i<$count;$i++){ for($j=$count-1;$j>$i;$j--){ if ($array[$j] <$array[$j-1]){//比较找到的数进行交换 $tmp =$array[$j]; $array[$j] =$array[$j-1]; $array[$j-1] =$tmp; } } } return $array; } /* * 快速排序(一维数组) * */ function quickSort($array){ if (count($array) <= 1){ return $array; } $key =$array[0]; $left_arr =array(); $right_arr =array(); for ($i=1;$i<count($array);$i++){ if ($array[$i] <=$key){ $left_arr[] =$array[$i]; }else{ $right_arr[] =$array[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr,array($key),$right_arr); } /** * 按照元素的值进行排序 * strOrder 为排列的顺序 asc 升序 desc 降序 */ function sortByVal($arr,$strOrder='asc') { if(!is_array($arr) ||count($arr)==0) { return $arr; } $arrReturn =array(); foreach($arr as $key=>$val) { $arrKey[] =$key; $arrVal[] =$val; } $count =count($arrVal); if($count) { //创建key的顺序数组 for($key=0;$key<$count;$key++) { $arrKeyMap[$key] =$key; } //对值进行排序 for($i=0;$i<$count;$i++) { for($j =$count-1;$j>$i;$j--) { //<从小到大排列 升降在这修改 $bol =$strOrder =='asc' ?$arrVal[$j]<$arrVal[$j-1] :$arrVal[$j]>$arrVal[$j-1]; if($bol){ $tmp =$arrVal[$j]; $arrVal[$j] =$arrVal[$j-1]; $arrVal[$j-1] =$tmp; //值的冒泡排序,引起key的数组的交互 $keytmp =$arrKeyMap[$j]; $arrKeyMap[$j] =$arrKeyMap[$j-1]; $arrKeyMap[$j-1] =$keytmp; } } } if(count($arrKeyMap)) { foreach ($arrKeyMap as $val) { $arrReturn[] =$arrKey[$val]; } } return $arrReturn; } } /** * 使用原生的函数进行数组按照值进行排列 */ function arraySortByVal($arr,$keys,$type='asc'){ $keysvalue =$new_array =array(); foreach ($arr as $k=>$v){ $keysvalue[$k] =$v[$keys]; } if($type =='asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] =$arr[$k]; } return $new_array;
对于下面的2个对于array的值进行排序的方法一个是自己实现的一个是使用了原生的PHP函数的,其实排序对于少量数据一般就单页的数据量的数据还是可以的,如果涉及到大量的数据的排序,建议可以整合到MYSQL的基础类中来进行。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用PHP数组实现图表和统计图的生成和显示PHP是一种广泛使用的服务器端脚本语言,具有强大的数据处理和图形生成能力。在Web开发中,经常需要展示数据的图表和统计图,通过PHP数组,我们可以轻松实现这些功能。本文将介绍如何使用PHP数组生成和显示图表和统计图,并提供相关的代码示例。引入必要的库文件和样式表在开始之前,我们需要在PHP文件中引入一些必要的库文

如何使用PHP数组生成动态幻灯片和图片展示幻灯片和图片展示是网页设计中常见的功能,常被应用于轮播图、图库展示等场景。而PHP作为一种流行的服务器端脚本语言,具备处理数据和生成动态HTML页面的能力,非常适合用于生成动态幻灯片和图片展示。本文将介绍如何使用PHP数组生成动态幻灯片和图片展示,并给出相应的代码示例。准备图片数据首先,我们需要准备一组图片的路径数据

php数组求平均值的函数有:1、array_sum(),用于计算数组中所有值的总和,为了计算平均值,可以将数组中的所有值相加,然后除以数组元素的个数;2、array_reduce(),用于迭代数组并将每个值与一个初始值进行计算;3、array_mean(),用于返回数组的平均值,先计算数组的总和,并计算数组元素的个数,将总和除以数组元素的个数,即得到平均值。

如何使用PHP数组实现用户登录和权限管理的功能在开发网站时,用户登录和权限管理是非常重要的功能之一。通过用户登录,我们可以验证用户身份并保护网站的安全性。而权限管理则能够控制用户在网站中的操作权限,确保用户只能访问他们被授权的功能。在本文中,我们将介绍如何使用PHP数组来实现用户登录和权限管理的功能。我们将使用一个简单的示例来演示这个过程。首先,我们需要创建

php判断数组有几个的方法:1、使用count()函数,适用于所有类型的数组。但是需要注意的是,如果传入的参数不是一个数组,count()函数会返回0;2、使用sizeof()函数,更多用于保持与其他编程语言的兼容性;3、自定义函数,通过使用循环遍历数组,每遍历一次,计数器加1,最终得到数组的长度。自定义函数可以根据实际需要进行修改和扩展,更加灵活。

php数组键值对是一种数据结构,由一个键和一个相应的值组成,键是数组元素的标识符,而值是与键相关联的数据。允许我们以键为标识来存储和访问数据,通过使用键值对,可以更方便地操作和管理数组中的元素,使得程序开发更加灵活和高效。

PHP数组是一种非常常见的数据结构,在开发过程中经常会用到。然而,随着数据量的增加,数组的性能可能会成为一个问题。本文将探讨一些PHP数组的性能优化技巧,并提供具体的代码示例。1.使用合适的数据结构在PHP中,除了普通数组外,还有一些其他数据结构,如SplFixedArray、SplDoublyLinkedList等,它们在特定情况下可能比普通数组性能更好

php判断数组为空的函数是“empty()”函数和“count()”函数。1、“empty()”函数,用于判断一个变量是否为空,包括判断数组是否为空,其语法为“empty($variable)”;2、“count()”函数,用于统计数组中的元素个数,其语法为“count($array)”。
