数据结构复习笔记:使用PHP实现内排序之冒泡排序和简单选择排序

本文介绍了排序算法中的冒泡排序和简单选择排序,并提供了这两种排序方式的PHP实现代码示例。同时,文章还对排序算法的概念进行了详细解释,包括内排序、基本操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【基本概念】
排序:排序是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列
内排序:内排序指的是待排序记录在放在计算机随机存储器中进行的排序过程
内排序大致可分为插入排序、交换排序、选择排序、归并排序和计数排序
在排序的过程中需要进行两种基本操作:1、比较两个关键字的大小,2、将记录从一个位置移动到另一个位置
【冒泡排序过程】
首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较批二个记录和第三个记录的关键字,依次类推,直至第n-1个元素和第n个元素进行过比较为止。以上为一次冒泡排序,礤结果是使得关键字最大的记录被安置到最后一个记录的位置上。然后进行第二真趟冒泡排序,对前n-1个记录进行同样操作,其结果是使关键字次大的记录安置到第n-1人的位置上,如此类似

【冒泡排序的PHP实现】

Code:
  1. <?php  
  2. /** 
  3.  * 数据结构中冒泡排序PHP实现 2010-07-26 sz 
  4.  * @author phppan.p#gmail.com  http://www.phppan.com                                                     
  5.  * 哥学社成员(http://www.blog-brother.com/) 
  6.  * @package data struct 
  7.  */  
  8.    
  9. /** 
  10.  * 冒泡排序 将数组从小到排序 
  11.  * @param array $array 需要排序的数据 
  12.  * @return array 
  13.  */  
  14. function bubble_sort($array) {  
  15.     if (!is_array($array)) {  
  16.         return FALSE;  
  17.     }  
  18.    
  19.     $len = count($array);  
  20.     for ($i = 0; $i < $len - 1; $i++) {  
  21.         for ($j = 0; $j < $len - $i - 1; $j++) {  
  22.             if ($array[$j] > $array[$j + 1]) {  
  23.                 $temp = $array[$j];  
  24.                 $array[$j] = $array[$j + 1];  
  25.                 $array[$j + 1] = $temp;  
  26.             }  
  27.         }  
  28.     }  
  29.    
  30.     return $array;  
  31. }  
  32.    
  33. /* 示例 */  
  34. $array = array(3, 2, 1, 4, 6, 7, 8, 0, 55);  
  35. var_dump(bubble_sort($array));  
  36. ?>  

【简单选择排序的过程】
选择排序的基本思想是:每一趟在n-i+1(i = 1,2,…,n-1)个记录中选择关键字最小的记录作为有序序列中第i个记录
其中最简单的是简单选择排序,其过程如下:
通过n-i次关键字间的比较,从n-i+1个记录中选择出关键字最小的记录,并各第i个记录交换之。
【简单选择排序的PHP实现】

Code:
  1. <?php  
  2. /** 
  3.  * 数据结构中简单选择排序PHP实现 2010-07-26 sz 
  4.  * @author phppan.p#gmail.com  http://www.phppan.com                                                  
  5.  * 哥学社成员(http://www.blog-brother.com/) 
  6.  * @package data struct 
  7.  */  
  8.    
  9. /** 
  10.  * 简单选择排序,将数组从小到大排序 
  11.  * @param array $array 需要进行排序的数组 
  12.  * @return array $array 
  13.  */  
  14. function select_sort($array) {  
  15.     if (!is_array($array)) {  
  16.         return FALSE;  
  17.     }  
  18.    
  19.     $len = count($array);  
  20.     for ($i = 0; $i < $len - 1; $i++) {  
  21.         for ($j = $i + 1; $j < $len$j++) {  
  22.             if ($array[$i] > $array[$j]) {  
  23.                 $temp = $array[$i];  
  24.                 $array[$i] = $array[$j];  
  25.                 $array[$j] = $temp;  
  26.             }  
  27.         }  
  28.     }  
  29.    
  30.     return $array;  
  31. }  
  32.    
  33. /* 示例 */  
  34. $array = array(3, 2, 1, 4, 6, 7, 8, 0, 55);  
  35. var_dump(select_sort($array));  
  36. ?>  

温故知新,以前对这两种排序方式一直模糊不清,总算了结了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值