PHP 数据结构 算法描述 冒泡排序 bubble sort_php技巧

复制代码 代码如下:

<?php
/**
* 冒泡排序 bubble sort
*
* 原理:多次循环进行比较,每次比较时将最大数移动到最上面。每次循环时,找出剩余变量里的最大值,然后减小查询范围。这样经过多次循环以后,就完成了对这个数组的排序
*/
function sort_bubble($list)
{
$len = count($list);
if(empty($len)) return $list;

for($i = 0;$i < $len; $i++)
{
for($j = $i + 1; $j < $len; $j++)
{
$flag = '';
if($list[$i] > $list[$j]) // 从小到大
//if($list[$i] < $list[$j]) // 从大到小
{
$tmp = $list[$i];
$list[$i] = $list[$j];
$list[$j] = $tmp;

$flag = " change";
}
echo implode(',',$list).$flag."<br/>";
}
echo "-------------------------<br/>";
}
return $list;
}

$list = array(4,3,2,1,5,7,3,7);
$list = sort_bubble($list);

时间: 2024-12-17 11:00:05

PHP 数据结构 算法描述 冒泡排序 bubble sort_php技巧的相关文章

经典排序算法之冒泡排序(Bubble sort)代码_C#教程

经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第一次两两比较6 > 2交换(内循环) 交换前状态| 6 | 2 | 4 | 1 | 5 | 9 | 交换后状态| 2 | 6 | 4 | 1

JavaScript中数据结构与算法(一):栈_javascript技巧

序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录下来吧 git代码下载:https://github.com/JsAaron/data_structure.git 栈结构 特殊的列表,栈内的元素只能通过列表的一端访问,栈顶 后入先出(LIFO,last-in-first-out)的数据结构 javascript提供可操作的方法, 入栈 push,

内部排序算法:冒泡排序

基本思想 将被排序的记录数组R[0..n-1]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡.根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其 向上"飘浮".如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止. 具体过程,如下所示: 初始状态:R[0..n-1]为无序区. 第一趟扫描:从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下.重者 在上,则交换二者的位置,即依次比较(R[n-1], R[n-2]).(R

我的Java开发学习之旅------&amp;gt;Java经典排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 一.算法原理 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.

指针-哪里有问题?求解答,数据结构算法的问题

问题描述 哪里有问题?求解答,数据结构算法的问题 /* 设计一个算法,将两个非递减的链表合并成一个非递增的有序链表 要求使用原来的存储空间,不开辟新的空间,表中允许有重复的数据./ / 我的思路是: 使用L1的头结点作为新表L3的头结点,然后让L1头结点的指针域置空, 从L1和L2中选择较大的结点,使用头插法插入到L3的后面, 为什么运行不了?求大神解答! */ void Combine(LinkList &L1,LinkList &L2,LinkList &L3){ struct

数据结构 算法 c语言 二叉排序树

问题描述 数据结构 算法 c语言 二叉排序树 RT 注意关键字X所代表的含义 解决方案 你的图片应该没有传上来,看不见你的问题啊

《C语言点滴》一1.4 程序=数据结构+算法

1.4 程序=数据结构+算法 C语言点滴 程序员首先要有自己的想法,而写程序只是为了实现自己的想法而已. 而程序员的想法就是用数据结构+算法来描述的.如果程序是一个人,正确的数据结构就像是强壮的体格,高效的算法就像是高尚的性格,而语言,只是一件外衣而已.不同的场景,你会穿不同的外衣,而且外衣可能还有一定的流行趋势,但这些真的不重要. 纠结于语言的程序员,就像是只关注外衣是否漂亮的小姑娘.凡是能够流传千古的作品,你会发现都是不穿衣服的,如图1-10所示的罗丹的思想者:更有甚者,不仅衣服没有了,就连

线性表-数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊

问题描述 数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊 #include #include #define ERROR 0 #define OK 1 typedef int Status; typedef int ElemType;//顺序表测试用 const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义 const int Increasement=10; typedef struct{ ElemType *elem; int length

数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数。

问题描述 数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数. 解决方案 int n = 0; while (L != NULL) { L = L->next; n++; } 解决方案二: /* counts the nodes in the list / int fuc(struct list head) { void *tmp; int i; if(!head) return -1; for(i = 1, tm