`
mars李
  • 浏览: 50198 次
  • 性别: Icon_minigender_1
  • 来自: 柳州
社区版块
存档分类
最新评论

二分法和快速排序的PHP实现

阅读更多
//二分法
function binarySearch($a, $val){
$low = 0;
$high= count($a) - 1;
while($low <= $high){
$mid = intval(($low+$high)/2);
if($a[$mid] == $val) return $mid;
if($a[$mid] > $val){
$high = $mid - 1;
}else{
$low = $mid + 1;
}
}
return -1;
}

//快速排序算法
function quickSort(&$a, $l, $r){
if($l >= $r) return;
$m = pation($a, $l, $r);
quickSort($a, $l, $m-1);
quickSort($a, $m+1, $r);
}

function pation(&$a, $l, $r){
$pivot = $a[$l];
$i = $l + 1;
$j = $r;
while(1){
while($a[$i] > $pivot && $i < $j) $i++;
while($a[$j] < $pivot) $j--;
if($i>=$j) break;
$temp = $a[$i];
$a[$i]= $a[$j];
$a[$j]= $temp;
}
$a[$l] = $a[$j];
$a[$j] = $pivot;
return $j;
}
分享到:
评论

相关推荐

    数据结构快速排序二分法查找

    在本文中,我们将详细介绍快速排序和二分法查找的原理、实现和应用。 快速排序 快速排序(Quicksort)是一种基于比较的排序算法,通过递归的方式将数组分成两个部分,左边部分的元素都小于或等于基准元素,右边...

    冒泡 快速排序 选择排序 二分法 插入 快速选择

    以下将详细讲解标题和描述中提到的几种排序算法:冒泡排序、快速排序、选择排序、二分法、插入排序以及快速选择排序。 1. **冒泡排序**:冒泡排序是一种简单的比较排序算法。它通过重复遍历待排序的数列,一次比较...

    二分法排序算法 C语言实现

    根据给定的文件信息,我们可以总结出以下关于“二分法排序算法C语言实现”的相关知识点: ### 1. 二分法搜索算法原理 二分法搜索算法,也称为折半查找算法,是一种在有序数组中查找特定元素的搜索算法。其基本思想...

    c++ 二分法查找 二分法排序 混合排序 希尔排序 插入排序

    binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure

    二分法直接插入排序算法

    通过深入理解二分法直接插入排序的原理,并结合实际的代码实现,可以更好地掌握这种优化后的排序算法,提高算法的运行效率。在编程实践中,根据具体场景选择合适的排序算法是非常重要的,二分法直接插入排序提供了一...

    冒泡排序、快速排序和二分法查找的分析 Java

    ### 冒泡排序、快速排序和二分法查找的分析:Java实现 #### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列...

    实现直接插入排序,二分法插入排序、希尔排序,冒泡排序,快速排序,直接选择排序的算法.pdf

    在本文中,我们将深入探讨五种常见的排序算法:直接插入排序、二分法插入排序、希尔排序、冒泡排序和快速排序,并对其实现进行详细的解释。 直接插入排序 直接插入排序是一种简单的排序算法,它的实现思路是:从第...

    二分法排序和查找(C#)

    在C#中,二分法排序和查找的性能分析如下: - 二分查找的时间复杂度为O(log n),空间复杂度为O(1)。这是因为每次迭代都将搜索范围减半,所以查找效率非常高。 - 二分插入排序的平均和最坏情况时间复杂度为O(n^2),...

    冒泡排序以及二分法查询

    冒泡排序以及二分法查询冒泡排序以及二分法查询冒泡排序以及二分法查询冒泡排序以及二分法查询冒泡排序以及二分法查询

    用javascript实现的十大排序算法详解

    递归地对这两部分进行快速排序,最后达到整个数组有序。 5. 归并排序(Merge Sort) 归并排序也是分治策略的应用,将数组分成两半,分别进行排序,然后合并两个已排序的子数组。JavaScript中实现归并排序通常需要一...

    C语言实现的二分法快速查找|二分法排序|二分法查找C#

    C#中还可以利用内置的`.FindIndex()`方法或`Array.BinarySearch()`函数来实现二分查找,这些方法提供了更简洁的语法和更好的性能。 ### 结论 二分查找作为一种高效的搜索算法,在处理大量有序数据时展现出强大的...

    C# 简单的冒泡、快速排序及二分法查找.zip

    本资源“C# 简单的冒泡、快速排序及二分法查找.zip”显然关注的是数据排序和查找算法的实现,这些都是计算机科学和编程的基础知识。 首先,我们来探讨冒泡排序(Bubble Sort)。这是一种简单的交换排序方法,适用于...

    算法之排序专题 二分法排序等等

    【算法之排序专题】本文主要探讨了排序算法,包括简单的排序算法和高级排序算法,特别提到了快速排序和二分法排序。排序算法在处理大量数据时扮演着关键角色,因此对算法效率的要求非常高。衡量算法效率的主要指标是...

    二分法的Java实现

    二分法的Java实现

    二分法查找算法代码 c语言实现

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。...理解并掌握二分查找的原理和实现,对于提升编程能力大有裨益。

    python实现快速排序的示例(二分法思想)

    二分法思想应用于快速排序中,通常是指在分割时使用二分思想找到基准值的确切位置,即在原数组中所有小于基准值的元素都位于基准值的左侧,而所有大于基准值的元素都位于基准值的右侧。这可以通过同时从数组的两头向...

    二分法文献和程序

    除了基本的查找之外,二分法还可以扩展应用到其他问题,如求解方程的根(二分法求解根)、查找数组中的最大或最小元素、排序算法(比如快速排序和归并排序的某些阶段)等。学习和掌握二分法对于提升编程能力和解决...

    数据结构排序算法汇总包-直接插入排序 折半插入排序 2—路插入排序 表插入排序 希尔排序 起泡排序 快速排序 简单选择排序 树形选择排序 堆排序 归并排序链式基数排序

    实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...

    二分法(代码实现)

    下面是一个简单的二分法的Python代码实现: ```python def binary_search(arr, target): left, right = 0, len(arr) - 1 while left mid = (left + right) // 2 if arr[mid] == target: return mid elif arr...

    快速乘法 二分法 快速傅立叶变换

    FFT通过蝶形运算(一种特殊的复数加法和乘法组合)来实现快速的DFT计算。通过对序列进行分组和重组,FFT能够在logn级的时间内完成原本需要n²次计算的DFT。 总结来说,快速乘法通过二分法和快速傅立叶变换大大减少...

Global site tag (gtag.js) - Google Analytics