PHP冒泡法排序与二分法查找实例

 

 代码如下 复制代码

//冒泡法排序
//随便给出一个乱序数组
$arr = array(0,2,10,9,19,23,89,112,321,234);
//统计数组
$num = count($arr);
//冒泡倒序排列
for($i=0;$i<$num-1;$i++){
 for($m=0;$m<$num-1;$m++){
  if($arr[$m]<$arr[$m+1]){
   $temp = $arr[$m];
   $arr[$m] = $arr[$m+1];
   $arr[$m+1] = $temp;
  }
  // echo $arr[$m].'<br>';
 }
}
//输出排序后的结果
var_dump($arr);
//冒泡顺序排列
for($x=0;$x<$num-1;$x++){
 for($y=0;$y<$num-1;$y++){
  if($arr[$y]>$arr[$y+1]){
   $temp = $arr[$y];
   $arr[$y] = $arr[$y+1];
   $arr[$y+1] = $temp;
  }
 }
}
//输出排序后的结果
var_dump($arr);
//二分法查找
function dichotomy($array,$k,$low=0,$high=0){
 if(count($array)!= 0 && $high == 0){
  $high = count($array);
 }
 if($low <= $high){
  $mid = intval(($low+$high)/2);
  if( $array[$mid] == $k ){
   return $mid;
  }elseif( $k<$array[$mid]){
   return dichotomy( $array,$k,$low=0,$mid-1);
  }else{
   return dichotomy( $array,$k,$mid+1,$high);
  }
 }else{
  return false;
 }
}
//输出查找结果
echo dichotomy($arr,23);

今天简单的研究了一下最常用的冒泡法排序与二分法查找,写了一个简单的案例,加强自己对php的学习

,也希望对今后php学习者能提供一点点的帮助。

时间: 2024-10-06 10:41:10

PHP冒泡法排序与二分法查找实例的相关文章

利用数组进行冒泡法排序举例

排序|数组 语法:VB .net环境:.NetFrameword1.1 Dim i, j, k As Integer        Dim tmp As Integer        Dim sr(20) As String        Dim rr(20) As String         sr(1) = 2        sr(2) = 11        sr(3) = 1        sr(4) = 4        sr(5) = 3        sr(6) = 12     

c语言-用冒泡法对字符排序,我哪里错了

问题描述 用冒泡法对字符排序,我哪里错了 #include #define N 10 char str[N]; int main(void) { int i,flag=1; while(i!=0 ) {printf(" 输入字符串,长度为10: "); scanf("%s",&str); if (strlen(str)>N) printf("超过长度,请重输!"); else flag = 0; } sort(str[i]); pr

Java简单数组排序(冒泡法)_java

本文实例讲述了Java简单数组排序(冒泡法).分享给大家供大家参考,具体如下: import java.util.Scanner; public class testArray { public static void main(String[] args) { Scanner input = new Scanner(System.in); int Max=0; int[] score = new int[5]; //自定义数组长度 System.out.println("please inpu

PHP的简易冒泡法代码分享_php技巧

很基础的东西,感觉代码还不够简洁,希望高手指导修改 复制代码 代码如下: <?php function BubbleSort($str){ for($i=0;$i<count($str);$i++){//从数组末尾取一个值: for ($k=count($str)-2;$k>=$i;$k--){//将这个值向前冒泡: if($str[$k+1]<$str[$k]){ //将小于号改为大于号,就是降序排列: $tmp=$str[$k+1]; $str[$k+1]=$str[$k];

有一个数组 3 7 5 0 2 9 8,用冒泡法对它排序,要求写出每一趟排序的结果。

问题描述 有一个数组 3 7 5 0 2 9 8,用冒泡法对它排序,要求写出每一趟排序的结果. 有一个数组 3 7 5 0 2 9 8,用冒泡法对它排序,要求写出每一趟排序的结果. 解决方案 3 7 5 0 2 9 83 5 0 2 7 8 93 0 2 5 7 8 90 2 3 5 7 8 9 解决方案二: 你没有说是按照从大到小还是从小到大顺序 解决方案三: 冒泡网上一搜就出来了啊 # include <stdio.h># define N 7void bubble_sort(int a[

单链表-C语言选择排序法和冒泡法区别问题

问题描述 C语言选择排序法和冒泡法区别问题 编程实现将给定的一组整数采用选择排序法按由小到大的顺序排序.要求: 1) 编写函数create()根据已知整数数组构造一个单链表,假设结点只有一个整数数据域. 2) 编写函数sort()采用选择排序方法对已知链表进行排序. 3) 在主函数中完成数据的输入与结果的输出. ===我自己写了一个程序,但是不确定选择排序法是什么,求大侠帮忙看下我写的代码sort()是选择排序吗?感觉自己混淆了选择排序法和冒泡排序了,求教如何区别? #include #incl

Go语言实现选择法排序实例_Golang

本文实例讲述了Go语言实现选择法排序的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import "fmt" func select_sort(a []int) {  len := len(a)  for i:=0; i < len-1; i++ {   k := i   j:= i + 1     for ; j < len; j++ {    if a[j] < a[k] { k = j }   }   if k

编程c语言-关于c语言选择法和冒泡法的区别,新手疑问

问题描述 关于c语言选择法和冒泡法的区别,新手疑问 两种方法怎样区别,求简单解释 解决方案 c语言冒泡法 解决方案二: 冒泡:把最小的数放在最后,不断地把底层的较大的数冒泡升上来: 选择:用一个变量不断地选择小的数,将值付给变量再通过变量付给相应位置的数组元素. 解决方案三: 1.冒泡排序基本思想就是对一组数据自上而下,对相邻的两个数作比较,每次让大的气泡向下沉,让小的气泡向上浮. 例如:3,1,9,2 几个数字,第一轮:3和1比较,3>1,所以交换位置:继续3和9比较,32,9和2交换: 结果

《算法基础:打开算法之门》一第3章 排序算法和查找算法

第3章 Algorithms Unlocked 排序算法和查找算法 在第2章中,我们看到了在数组上进行线性查找的三个算法.我们能做得更好吗?答案是:看情况.如果不清楚数组中的元素是否有序,我们是不可能做得更好的.在最坏情况下,我们必须查找数组的所有n个元素,因为如果在前n-1个元素中不能找到要找的值,那么要查找的元素可能在第n个位置上.因此,当我们不清楚数组中的元素是否有序时,我们不可能实现比Θ(n)更好的最坏情况运行时间. 然而,假定数组是以非递减顺序排序的,那么根据"非递减"的含义