改进型的PHP冒泡算法:
$arr = array(2,3,4,1,2,3,4,5,6,7);
function maopao($arr){
$length = count($arr);
for($i=0,$f=true; $i<$length-1&&$f; $i++){
$f = false;
for($j=0; $j<$length-$i-1; $j++){
if ($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
$f = true;
}
echo $i. "---" . $j ."---"."<br />";
}
}
}
传统的PHP冒泡算法:
$arr = array(2,3,4,1,2,3,4,5,6,7);
function maobao($arr){
$count = count($arr);
for($i=0;$i < $count;$i++){
for($j = ($count-1); $j > $i;$j--){
if($arr[$j] < $arr[$j-1]){
$tem = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tem;
}
}
}
return $arr;
}
如果只看PHP的运行速度,会发觉传统的比较快,但仔细的研究
假如运行的排序$arr = array(1,2,3,4,5,6); 这类型的数组会有什么事情发生?
就是计算次数大大减少
分享到:
相关推荐
为了提高冒泡排序的效率,人们提出了多种改进算法,其中鸡尾酒排序(Cocktail Sort,又称双向冒泡排序)是一种常见的优化策略。 鸡尾酒排序的基本思想是在排序过程中,不仅从左向右进行比较和交换,还会从右向左...
总的来说,基于FPGA的改进型中值滤波算法研究,展示了如何通过硬件优化来提升图像处理的速度与效率,同时保证了处理质量。这对于需要高实时性处理的图像和视频应用领域具有重要的参考价值和实际应用潜力。
### Ruby语言中的冒泡排序算法 #### 知识点一:冒泡排序基本概念 - **定义**:冒泡排序是一种简单的排序算法,通过重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的...
本文主要介绍了C语言排序算法之冒泡排序实现方法,结合具体实例形式分析了C语言实现的基本冒泡排序实现方法及增设flag标志位的改进型算法。 一、冒泡排序算法的基本概念 冒泡排序是一种简单的排序算法,通过反复...
在编程领域,排序算法是数据结构与算法中的基础部分,对于C#开发者来说,理解和掌握各种排序算法至关重要。本文将详细解析C#中常见的几种排序算法,包括冒泡排序、快速排序、插入排序、基数排序、堆排序、选择排序...
### 数据结构与算法 #### 算法基础与重要性 - **算法定义**:算法是一种解决问题的方法,尤其适用于计算机程序的设计与实现。本部分主要使用Java语言来阐述算法的概念和实现。 - **算法的重要性**: - **时间与...
根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....
8. **计数排序**、**桶排序**和**基数排序**:这三种属于非比较型排序算法,它们不依赖于元素之间的比较,而是基于特定的性质(如整数的大小、出现频率等)进行排序。它们通常在特定条件下效率较高,但不适合通用...
冒泡排序是最基础的排序算法之一,通过重复遍历待排序的数组,比较相邻元素并交换顺序,使较大的元素逐渐“冒”到数组的末尾。其主要步骤是:比较相邻元素,如果前一个比后一个大,则交换位置,一轮遍历后最大的...
本文研究的主要目的是提出一种基于STM32微控制器的改进型软件滤波算法,以有效消除A/D采样数据中的干扰,进而提高数据的稳定性和准确性。在工程实践和实验中,A/D转换是将模拟信号转换为数字信号的过程。在此过程中...
冒泡排序是一种简单的排序算法,主要通过重复遍历待排序的列表,比较每对相邻元素并根据需要进行交换,使得每一轮遍历后最大的元素“浮”到列表末尾。这个过程不断进行,直到整个列表完全排序。冒泡排序的时间复杂度...
在本文中,我们将比较和分析几种基本的排序算法,包括冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、希尔排序、归并排序以及基数排序。 1. **冒泡排序**: 冒泡排序是最简单的排序算法之一,通过重复...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...
此外,实验报告还可能包含对每种算法的优化改进,如快速排序中的随机化选取枢轴,以及动态规划中的剪枝技巧,旨在提升算法的实际性能。 在学习过程中,理论与实践相结合至关重要。理论部分涵盖了算法设计的基本原则...
5. **基数排序**:基数排序是一种非比较型整数排序算法,其原理类似于人们手工排序扑克牌的过程。它按位数从低位到高位进行排序,适用于固定长度的整数排序。 #### 三、排序算法的比较与选择 不同的排序算法在时间...
冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻的元素并根据需要交换它们,直到序列完全排序。该算法的名字来源于排序过程中较大的元素逐渐"浮"到序列的顶端,就像水底下的气泡逐渐升至水面。...
8. **计数排序、桶排序、基数排序**:这些是线性时间复杂度的非比较型排序算法,适用于特定的数据分布情况,例如整数排序。 这个压缩包中的Java代码实现可以帮助我们深入理解这些算法的逻辑和细节,同时也可以作为...
### 《计算机算法-设计与分析导论》中文翻译版 #### 1. 算法基础 **1.1 引言** 本章节作为全书的开篇,旨在为读者介绍计算机算法的基础概念,包括算法的基本定义、设计原则以及评估方法等。通过这部分内容的学习...
在计算机科学领域,排序算法是数据结构与算法分析的重要组成部分,它主要负责将一组数据按照特定的顺序进行排列。这个压缩包文件“排序算法大集合”显然包含了多种排序算法的详细说明和实例,旨在帮助我们理解和掌握...
6. **双向冒泡排序**(Bidirectional Bubble Sort):双向冒泡排序是在冒泡排序的基础上改进的,同时从数组两端向中间进行比较,减少了不必要的交换次数,但其平均时间复杂度仍为O(n^2)。 7. **快速排序**(Quick ...