php冒泡排序
原理和实现: 两两相邻的数进行比较,如果反序就交换,否则不交换
1,3,2,4,6,5
for($i=0,$c=count($arr);$i<=$c;$i++){
for($j=0;$j<$c;$j++){
if($arr[$j]>$arr[j+1]){
$temp=$arr[j+1];
$arr[j+1]=$arr[j];
$arr[j]=$temp;
}
}
}
echo $arr;
直接插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
延伸:算法的概念
解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
一个问题可以有多个算法,每种算法有不同的效率
一个算法具有五个特征:有穷性,确切性,输入项,输出项,可行性
延伸:时间复杂度和空间复杂度的概念
时间复杂度:执行算法所需要的计算工作量
时间复杂度的计算方式:
得出算法的计算次数公式
用常数1来取代所有时间中的所有加法常数
在修改后的运行次数函数中,只保留最高阶项
如果最高阶项存在且不是1,则去除与这个项相乘的常数
空间复杂度:算法需要消耗的内内存空间
延伸:常见排序算法
冒泡排序,直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序(最优)
延伸:常见查找算法
二分查找(最优):从数组的中间元素开始,如果中间元素正好是要查找的元素,搜索结束,如果某一个特定元素大于或者小于中间元素,则在数组大于或者小于中间元素的那一半中查找,而且跟开始一样从中间开始比较,如果某一步骤数组为空,代表找不到。