排序
排序:(数组的排序)
常用的:冒泡排序,选择排序,插入排序,(快速排序)
排序是一个程序员的基本功;
函数sort()是系统提供的数组从小到大排列的方法;
内部排序:把数据加载到内存的排序;(交换,选择,插
入);
外部排序:数据大,内存无法加载;可将数据分部分载入
内存;需要借助外部文件来存储;
交换(冒泡,快速);
冒泡:像水底的气泡一样向上冒,大的从后向前冒,即:
从后向前 数与相邻的数比较大的放前面,小的
排后面;(从大到小)(从小到大也行)
//冒泡排序法
$arr=array(0,5,-1);
//我们要把数组,从小到大排
//外层循环
for($i=0;$i<count($arr)-1;$i++){
for($j=0;$j<count($arr)-1-$i;$j++){
if($arr[$j]>$arr[$j+1]){
//说明前面的数大于后面的数,要交换
$temp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
}
选择排序法:
这数组的N个元素中选择一个最小的,放在第一位
在剩下的N-1个元素中选择一个最小的,放在第二位;
function selectsort(&$arr){
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
//假设$i就是最小数
$minval=$arr[$i];
$minindex=$i;
for($j=$i+1;$j<count($arr);$j++){
if($minval>$arr[$j]){
$minval=$arr[$j];
$minindex=$j;
}
}
//最后交换
$temp=$arr[$i];
$arr[$i]=$arr[$minindex];
$arr[$minindex]=$temp;
}
}
$arr=array(3,2,4,23,-12,-323);
selectsort($arr);
print_r($arr);
插入排序法
给你一个数组$arr[],它有n个值,但我们可以假设,
$arr[]只有一个元素x,把别的n-1个元素y和这个元素 比较如果比这个元素x小,这个元素x向后移一位,元素
y 插入
例子:
$arr=array(x,y,z)--假设(x)--y<x-->(y,x,z)
--z<x--(y,x,x)--z<y--(y,y,x)-->(z,y,x)
function insertsort(&$arr){
//满足条件,就没找到正确位置
for($i=1;$i<count($arr);$i++){
$insertval=$arr[$i];
$insertindex=$i-1;
while($insertindex>=0&&$insertval<$arr[$insertindex]){
$arr[$insertindex+1]=$arr[$insertindex];
$insertindex--;
}
//找到插入位置
$arr[$insertindex+1]=$insertval;
}
}
浙公网安备 33010602011771号