PHP--冒泡、选择、插入排序法

使用php来实现常用三种排序方法:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/10/12
 6  * Time: 21:38
 7  */
 8 // 冒泡排序法
 9 function maopao_sort(&$arr){
10     // 外循环 控制趟数 只需要count($arr)-1趟就可以完成排序
11     for($i=0;$i<count($arr)-1;$i++){
12         // 内循环控制每一趟,找出最大的那个数:ccount($arr)-1-$i
13         for($j=0;$j<count($arr)-1-$i;$j++){
14             if ($arr[$j] > $arr[$j+1]){
15                 $temp = $arr[$j+1];
16                 $arr[$j+1] = $arr[$j];
17                 $arr[$j] = $temp;
18             }
19         }
20     }
21 }
22
23 //选择排序法
24 function SelectSort(&$arr){
25     for($i=0;$i<count($arr)-1;$i++){
26         // 假设的最小数
27         $minVal = $arr[$i];
28         //最小数的下标
29         $minIndex = $i;
30         for($j=$i+1;$j<count($arr);$j++){
31             if ($minVal>$arr[$j]){
32                 $minVal = $arr[$j];
33                 $minIndex = $j;
34             }
35         }
36         if ($i != $minIndex){
37             $temp = $arr[$i];
38             $arr[$i] = $minVal;
39             $arr[$minIndex] = $temp;
40         }
41     }
42 }
43
44 // 插入排序法(小-->大)
45 function InsertSort(&$arr){
46     for ($i=1;$i<count($arr);$i++){
47         // 带插入的值
48         $insertVal = $arr[$i];
49         // 要比较的位置下标
50         $insertIndex = $i -1;
51         while ($insertIndex>=0 && $insertVal<$arr[$insertIndex]){
52             // 如果被比较数的下标大于等于0;插入的值比被比较的值小,则将被比较的值想后移
53             $arr[$insertIndex+1] = $arr[$insertIndex];
54             $insertIndex--;
55         }
56         // 插入insertVal
57         if($insertIndex+1 != $i){
58             $arr[$insertIndex+1] = $insertVal;
59         }
60     }
61 }
62
63
64 $arr = array(10,2,0,-23,90,-100,400);
65 //maopao_sort($arr);
66 //SelectSort($arr);
67 InsertSort($arr);
68 echo var_dump($arr)."<br>";
69 print_r($arr);

快速排序法:

 1 <?php
 2 function quickSort(&$arr){
 3     if(count($arr)>1){
 4         $k=$arr[0];
 5         $x=array();
 6         $y=array();
 7         $_size=count($arr);
 8         for($i=1;$i<$_size;$i++){
 9             if($arr[$i]<=$k){
10                 $x[]=$arr[$i];
11             }elseif($arr[$i]>$k){
12                 $y[]=$arr[$i];
13             }
14         }
15         $x=quickSort($x);
16         $y=quickSort($y);
17         return array_merge($x,array($k),$y);
18     }else{
19         return$arr;
20     }
21 }
22 ?>
时间: 2024-12-20 01:09:06

PHP--冒泡、选择、插入排序法的相关文章

php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式排序法 冒泡法 基本思想: 冒泡排序法 案例: 1234567891011121314151617181920212223242526 //简单的$arr=array(0,5,-1); //现在我们把函数毛片封装成函数,利用以后使用//数组默认传递的是值,不是地址,&是地址符function bubb

java冒泡算法和选择排序法

1 package test.auto; 2 3 import java.util.Arrays; 4 5 import org.apache.bcel.generic.FieldGenOrMethodGen; 6 7 public class Maopao0807{ 8 9 public static void main(String[] args) { 10 //冒泡,每个相邻进行比较 11 int a[]={ 6, 5, 3, 1, 8, 7, 2, 4 , 0}; 12 for (int

冒泡法和选择排序法(比较容易写混)

1 #include<stdio.h> 2 3 4 //冒泡排序法 5 6 void bubbling(int a[],int n); 7 8 //选择排序法 9 void choose(int a[],int n); 10 int main() 11 { 12 int i; 13 int s[6]; 14 printf("please enter five numbers:\n"); 15 for(i=1;i<6;i++) 16 { 17 scanf("%

简单排序的俩种思想——冒泡法和选择排序法

冒泡法: 基本思想:每次将相邻的两个数比较,将小的调到前头(即为升序排列).首先比较第一和第二两个数,小的调到前头,再将比完后的第二个数与第三个数比较,同理小的调到前头.如此比较下去.假设有6个数参与排序,则第一趟两两之间共比较5次,第一趟比完之后最大的数已经到底.然后进行第二趟比较,两两之间共比较4次,将次大数调到倒数第二个数的位置.共需比较5趟,5趟比完之后呈现升序排列. 总结规律:如果有n个数,则要进行n-1趟比较.在第一趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次比较.

基于python语言的经典排序法(冒泡法和选择排序法)

前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 在之前,曾写过使用java和C语言实现该两种排序法,详情见https://www.cnblogs.com/hong-fithing/p/7615907.html 搭建环境,准备工作就不冗余介绍了,网上搜罗一大堆 目录 冒泡排序法 选择排序法 冒泡排序法 冒泡类似于汽水现象,摇动一下,就有很多泡往上冒

排序之直接插入排序法

最近看数据结构时看到直接插入排序法,其基本思想是:将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表 下面是代码实现与测试 1 #include <iostream> 2 using namespace std; 3 void InsertSort(int *q,int L) 4 { 5 int i,j,temp; 6 for(i=1;i<L;i++) 7 { 8 temp=q[i]; 9 for(j=i-1;j>=0&&temp<q[

python 数据结构与算法之排序(冒泡,选择,插入)

目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 计算机重要的几门课: 1.数据结构和算法 2.网络 3.操作系统 4.计算组成原理 数据结构与算法: 算法: 衡量算法的标准: 时间复杂度:就是程序代码执行的大概次数 小结: 时间复杂度是用来估计算法运行时间的一个式子(单位) 一般来说,时间复杂度高的算法比复杂度低的算法慢 常见的

常用排序法之一 ——冒泡排序法和选择排序法

语言中,常用的算法有:冒泡排序.快速排序.插入排序.选择排序.希尔排序.堆排序以及归并排序等等.那么从这篇开始,我将分别总结下这几种排序法. 先交代一下,我们将要排序的数组定义为arr[N],即数组arr[]包含N个元素. ## 冒泡排序法(Bubblesort) ## 所谓排序法,就是对一组无序的序列进行有序的排序(从大到小或者从小到大),那么什么叫冒泡排序法,冒泡排序法又是怎么实现数组的有序排列呢. 冒泡排序法的具体实现方法是这样的,从数组的第一个元素`arr[0]`开始,两两比较**(`a

算法大神之路----排序(插入排序法)

插入排序法 所谓插入排序法乃是将一个数目插入该占据的位置. 输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕. 代码示例: import java.util.Random; /** * 算法大神之路----排序(插入排序法) */ public class Study03 { public static void main(String[] args) { //新建一个数组 int[] arr = n