基本算法小结
2016-06-09 21:01
316 查看
1.冒泡排序
function bubbleSort(&$arr){
$temp=0; //用于交换的中间变量
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;
}
}
}
}
2.选择排序
function selectSort(&$arr){
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
$minIndex=$i; //假设$i为最小的数
for($j=$i+1;$j<count($arr);$j++){
{
if($arr[$j]<$minVal) //假设的$i不是最小
$minIndex=$j;
}
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
}
}
3.插入排序
function insertSort(&$arr){
for($i=1;$i<count($arr);$i++){
$insertVal=$arr[$i];
$insertIndex=$i-1;
while($insertVal<$arr[$insertIndex]&&$insertIndex>=0){
$arr[$insertIndex+1]=$arr[$insertIndex]; //把大的数往后移动
$insertIndex--;
}
$arr[insertIndex+1]=$insertVal; //说明找到了合适的位置
}
}
从效率上看,冒泡排序<选择排序<插入排序
4.二分查找
function binarySearch(&$arr,$leftIndex,$rightIndex,$findVal){
if($leftIndex>$rightIndex){
echo "找不到该数";
return;
}
$middle=round(($leftIndex+$rightIndex)/2);
if($findVal>$arr[$middle]){ // 递归
binarySearch(&$arr;$middle+1;$rightIndex;$findVal);
}
if($findVal<$arr[$middle]){
binarySearch(&$arr;$leftIndex;$middle-1;$findVal);
}
if($findVal=$arr[$middle]){
return $middle;
}
}
1.冒泡排序
function bubbleSort(&$arr){
$temp=0; //用于交换的中间变量
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;
}
}
}
}
2.选择排序
function selectSort(&$arr){
$temp=0;
for($i=0;$i<count($arr)-1;$i++){
$minIndex=$i; //假设$i为最小的数
for($j=$i+1;$j<count($arr);$j++){
{
if($arr[$j]<$minVal) //假设的$i不是最小
$minIndex=$j;
}
$temp=$arr[$i];
$arr[$i]=$arr[$minIndex];
$arr[$minIndex]=$temp;
}
}
}
3.插入排序
function insertSort(&$arr){
for($i=1;$i<count($arr);$i++){
$insertVal=$arr[$i];
$insertIndex=$i-1;
while($insertVal<$arr[$insertIndex]&&$insertIndex>=0){
$arr[$insertIndex+1]=$arr[$insertIndex]; //把大的数往后移动
$insertIndex--;
}
$arr[insertIndex+1]=$insertVal; //说明找到了合适的位置
}
}
从效率上看,冒泡排序<选择排序<插入排序
4.二分查找
function binarySearch(&$arr,$leftIndex,$rightIndex,$findVal){
if($leftIndex>$rightIndex){
echo "找不到该数";
return;
}
$middle=round(($leftIndex+$rightIndex)/2);
if($findVal>$arr[$middle]){ // 递归
binarySearch(&$arr;$middle+1;$rightIndex;$findVal);
}
if($findVal<$arr[$middle]){
binarySearch(&$arr;$leftIndex;$middle-1;$findVal);
}
if($findVal=$arr[$middle]){
return $middle;
}
}
相关文章推荐
- JavaScript演示排序算法
- 冒泡排序
- C#冒泡法排序算法实例分析
- C++实现对输入数字组进行排序
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- 用PHP写的一个冒泡排序法的函数简单实例
- JavaScript实现多种排序算法
- js实现数组冒泡排序、快速排序原理
- 分享javascript实现的冒泡排序代码并优化
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- c++冒泡排序示例分享
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- python冒泡排序算法的实现代码
- 使用Java实现希尔排序算法的简单示例
- c语言实现冒泡排序、希尔排序等多种算法示例