基本概念:
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。假如有10个数需要进行排序,则外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i,j的值依次为1,2,...10-i。
<?php /* * point one: remember swap variable * point two: remember inside loop size */ $arr = array(2,1,4,2,7); //init a array variable $result = maoSort($arr); //invoke a function and get result echo '<pre>'; //output format print_r($result); //output result echo '</pre>'; function maoSort($arr){ //function start $size = count($arr)-1; //need to loop size is total length - 1 for ($i = 0; $i < $size; $i++) { //outside loop for ($j = 0; $j < $size-$i; $j++) { //inside loop if ($arr[$j] < $arr[$j+1]) { //compare big or small $temp = $arr[$j]; //start swap $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } ?>
相关推荐
本话题主要探讨了三种经典的排序算法——冒泡排序、快速排序和选择排序的PHP实现。这三种算法各有优缺点,适用于不同的场景,理解并掌握它们对于提升PHP编程能力十分有益。 首先,我们来看冒泡排序(Bubble Sort)...
冒泡排序是一种基础且经典的排序算法,主要应用于计算机科学领域,特别是在编程语言如C++中。这个算法通过不断地比较相邻元素并交换位置来逐步排序数组或列表。在"最新冒泡排序c++的写法"中,我们可以探讨以下几个...
对于教学目的,Python的简洁语法使得编写和理解排序算法源码变得简单,如使用Python实现冒泡排序或快速排序。 6. **排序算法的时间复杂度和空间复杂度**: 每种排序算法都有其特定的时间复杂度和空间复杂度,这...
在这个名为"50个算法源码(php版)"的资源包中,我们找到了一系列用PHP实现的著名算法,这对于学习和理解算法,以及提升PHP编程技能都非常有帮助。下面将详细讨论其中涉及到的一些重要算法。 1. **排序算法**:排序...
本篇文章将探讨如何利用这两种模式实现简单的排序算法,以提高代码的可读性和可扩展性。 首先,简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,一个工厂类负责创建对象,...
本项目集成了多种语言,包括Java、Python、VB、C++和PHP,提供了10个数据结构课程设计实例,涵盖了二叉树的建立、遍历算法以及常见的排序算法——冒泡排序和快速排序。这些实例对于学习和理解数据结构及其应用有着...
- **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 - **查找算法**:如顺序查找、二分查找、哈希查找。 - **递归与分治策略**:例如斐波那契数列、汉诺塔问题、快速排序等。 - *...
排序算法包括快速排序、归并排序、冒泡排序、插入排序等,它们在处理大量数据时能显著提高效率。查找算法如二分查找和哈希查找,提供了高效的数据检索方式。图论和动态规划则在解决复杂问题,如最短路径、背包问题时...
例如,排序算法(如冒泡排序、快速排序、归并排序等)有助于理解数据组织和优化;查找算法(如二分查找、哈希查找)则可以帮助提高数据检索效率。 其次,学习算法能开拓思维。每个算法都是开发者智慧的结晶,它们...
│ │ ├── BubbleSort.php 冒泡排序 │ │ ├── HeapSort.php 堆排序 大根堆 │ │ ├── MBaseSort.php 基数排序 MSD │ │ ├── LBaseSort.php 基数排序 LSD │ │ ├── QuickSort.php 快速排序 │ │ ...
排序是计算机科学中的基础内容,对于Java开发者来说,理解并能熟练运用各种排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)至关重要。这些算法的实现和性能分析有助于提升编程能力,优化...
这包括排序算法(如冒泡排序、快速排序)、查找算法、图算法(如Dijkstra算法、Floyd算法)以及时间复杂度和空间复杂度分析。 这些文档和资料集合提供了一个全面的自我学习路径,无论是对初学者还是有经验的开发者...
书中可能深入讲解了排序算法(如冒泡、选择、插入、快速、归并等)、查找算法(如二分查找、哈希查找)以及常用的数据结构(如数组、链表、栈、队列、树、图等)。 三、软件工程 软件工程是程序员实践中的重要环节...
3. **算法与数据结构**:这是编程的基础,可能会涉及排序算法(冒泡、选择、快速、归并等)、查找算法、图和树等数据结构。 4. **错误处理和调试**:如何处理运行时错误,使用断点、日志和调试工具来查找和修复问题...