热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php实现冒泡排序,选择排序,插入排序和快速排序快速排序法快速排序c语言快速排序算法c语

快速排序,插入排序:php实现冒泡排序,选择排序,插入排序和快速排序:之前自学数据结构的时候看过C语言版的四种基本排序法,C语言都忘的差不多了,最近有空就用php将四种排序法重新写了一遍,复习一下日益生疏的算法。直接贴上代码。;print_r($var);echo;}$arrarray(33,11,22,66
之前自学数据结构的时候看过C语言版的四种基本排序法,C语言都忘的差不多了,最近有空就用php将四种排序法重新写了一遍,复习一下日益生疏的算法。直接贴上代码。

";
    print_r($var);
    echo "
"; } $arr=array(33,11,22,66,55,44,88,99,77); printf("**原数组**"); p($arr); /** *冒泡排序法 * @param $arr 排序数组 *思路:和相邻的数字对比,每次对比如果左边比右边大则交换位置。 *两个节点,一个方向:两次循环次数,冒泡方向(即$j的初值和终止条件) *num的作用是做了优化,一旦循环没有交换则冒泡已完成 **/ function bubbleSort($arr){ print("**冒泡排序法**"); $len=count($arr); $temp=0; $num=1; for ($i=0; ($i <$len-1)&&($num>0); $i++) { $num=0; for ($j=$len-1; $j>$i; $j--) { if($arr[$j]>$arr[$j-1]){ continue; }else{ //冒泡交换 $temp=$arr[$j-1]; $arr[$j-1]=$arr[$j];; $arr[$j]=$temp; $num++; } } } return $arr; } p(bubbleSort($arr)); /** *选择排序法 * @param $arr 排序数组 *思路:每一轮循环,找出最小的数字,把其下标保存到最左方数字 *而找出最小数字的方法是:和右方数字比较,若右方比较小,则保存其下标,再将此下标对应的值和 *下一个右方数字比较直到所有右方数字比较一遍,再将此最小值存放在最左方数字 **/ function selectSort($arr){ print("**选择排序法**"); $len=count($arr); $buff=0; for ($i=0; $i <$len-1; $i++) { $temp=$i; for ($j=$i; $j <$len-1; $j++) { if($arr[$temp]>$arr[$j+1]){ $temp=$j+1;//若右方数字更小,则保存其下标,用来跟后面的数据比较 } } //得到最小的数字下标 if($temp!=$i){ //如果下标不是$i则交换,不然就没必要 $buff=$arr[$temp]; $arr[$temp]=$arr[$i]; $arr[$i]=$buff; } } return $arr; } p(selectSort($arr)); /** *插入排序法 * @param $arr 排序数组 *思路:假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中。即把第二个数据插入到 *第一个数据之中,使其形成一个有序数组,然后再讲第三个数插入到前面两个数组成的有序数组中,形成 *有序数组,如此反复最后完成排序 **/ function insertSort($arr){ print("**插入排序法**"); $len=count($arr); for ($i=1; $i <$len; $i++) { $temp=$arr[$i];//将要插入的数据缓存 for ($j=$i-1; $j >=0; $j--) { if($temp<$arr[$j]){ $arr[$j+1]=$arr[$j];//如果要插入的数据比原数组的最后一个小,则与之交换 $arr[$j]=$temp; }else break; } } return $arr; } p(insertSort($arr)); /** *快速排序法 * @param $arr 排序数组 *思路:选择一个基准元素,通过一趟扫描,将待排序列分成两部分,再对每一部分递归调用自己方法 *最后返回左边排序好的数组和右边排序好的数组和基准元素合并,就是有序数组了。 **/ function quickSort($arr){ $len=count($arr); if($len<=1) return $arr; $baseNum=$arr[0]; $leftArr=$rightArr=array(); //根据基准元素分成两部分 for ($i=1; $i <$len; $i++) { if ($arr[$i]<=$arr[0]) { $leftArr[]=$arr[$i]; }else{ $rightArr[]=$arr[$i]; } } $leftArr=quickSort($leftArr);//递归调用 $rightArr=quickSort($rightArr); return array_merge($leftArr,array($baseNum),$rightArr); } print("**快速排序法**"); p(quickSort($arr)); ?>

运行结果:

快速排序,快速排序算法,快速排序 java,c 快速排序,快速排序时间复杂度,java快速排序算法,快速排序法,快速排序c语言,快速排序算法c语

快速排序,快速排序算法,快速排序 java,c 快速排序,快速排序时间复杂度,java快速排序算法,快速排序法,快速排序c语言,快速排序算法c语

以上就介绍了php实现冒泡排序,选择排序,插入排序和快速排序,包括了快速排序,插入排序方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 动物餐厅高效获取小鱼干攻略
    本文将介绍2023年动物餐厅中快速赚取小鱼干的有效方法,帮助玩家更轻松地积累资源。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
author-avatar
liutiancinet
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有