桶排序 - 算法 - PHP版

<?php

//初始化数组,默认值为0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
    $arr[$i] = 0;
}

//定义测试数据
$arr1 = array(5, 3, 5, 3, 7);

//根据数据 对默认数组的对应元素进行+1
for ($j = 0; $j < count($arr1); $j++) {
    $arr[$arr1[$j]]++;
}

//循环输出
for ($k = 0; $k <= 10; $k++) {
    for ($l=1; $l <=$arr[$k]; $l++) {
        echo "$k </n>";
    }
}

  

原文地址:https://www.cnblogs.com/benben7466/p/8748068.html

时间: 2024-08-28 19:40:24

桶排序 - 算法 - PHP版的相关文章

8-4.桶排序算法详解

1. 桶排序介绍 桶排序(Bucket sort)是一种基于计数的排序算法,工作的原理是将数据分到有限数量的桶子里,然后每个桶再分别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序).当要被排序的数据内的数值是均匀分配的时候,桶排序时间复杂度为Θ(n).桶排序不同于快速排序,并不是比较排序,不受到时间复杂度 O(nlogn) 下限的影响. 桶排序按下面4步进行: 1. 设置固定数量的空桶. 2. 把数据放到对应的桶中. 3. 对每个不为空的桶中数据进行排序. 4. 拼接从不为空

桶排序算法

桶排序的基本思想 桶排序利用函数的映射关系,将待排序的数组分成了N个块(桶).实际上,桶排序的f(k)值的计算,其作用就相当于快排中划分,已经把大量数据分割成了基本有序的数据块(桶).然后只需要对每个桶中的少量数据做比较排序(比较排序:即在比较的基础上进行交换,达到排序效果)即可. 假如待排序列K= {49. 38 . 35. 97 . 76. 73 . 27. 49 }.这些数据全部在1-100之间.因此我们定制10个桶,然后确定映射函数f(k)=(k*10)/(k.max).则第一个关键字4

排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结束.时间复杂度:O(n^2) 选择排序:每次在无序队列中"选择"出最大值,放到有序队列的最后,并从无序队列中去除该值(具体实现略有区别).时间复杂度:O(n^2) 直接插入排序:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的 移动数据,空出一个适当的位置,把待插

桶排序算法-python实现

来源: <啊哈算法> 5个数字 5 3 5 2 8需要排序. 用到了桶排序思路 l=[0,0,0,0,0,0,0,0,0,0] p=[5,3,5,2,8] for i in range(10):     for j in p:         if i==j:             l[i]+=1 print l new_l=[] for i in range(10): #核心点在这里     if l[i]!=0:         for j in range(l[i]):        

算法导论------------桶排序算法之研究

举个来说明桶排序的过程,假设现在有A={0.78,0.17,0.39,0.26,0.72,0.94,0.21,0.12,0.23,0.68},桶排序如下所示: 研究过计数排序我们知道了----计数排序是假设输入是由一个小范围内的整数构成,而桶排序则假设输入由一个随机过程产生的,该过程将元素均匀而独立地分布在区间[0,1)上.当桶排序的输入符合均匀分布时,即可以线性期望时间运行.桶排序的思想是:把区间[0,1)划分成n个相同大小的子区间,成为桶(bucket),然后将n个输入数分布到各个桶中去,对

常见的排序算法--java版

个人总结的常见的排序算法 public class Sort { // 1.冒泡:稳定,最优O(n) 最差O(n^2) 平均O(n^2) private static void sort1(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length - 1; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = ar

排序算法(OC版)

针对每个算法实现的代码没有单独上传到gitHub,有需要的来群里下载<欢迎大家加入iOS开发学习交流群:QQ529560119> 数据结构与算法的作用: 数据结构与算法相当于内功心法,而各种编程语言相当于武功的各种招式例如降龙十八掌等等.内功心法更扎实,打出来的招式才会更有伤害. 排序是计算机内经常进行的一种操作,其目的是将一组"无序"的记录序列调整为"有序"的记录序列. 排序算法是所有算法中最为常见的一种算法,例如,在学校上体育课,站队按照身高从低到高

经典排序算法 — C# 版(上)

提起排序,与我们的息息相关,平时开发的代码少不了排序. 经典的排序算法又非常多,我们怎么评价一个排序算法的好坏呢? 其实可以这样想,要细致的比较排序算法好坏,那我们就从多方面尽可能详细的对比 一.效率方面 1.排序算法的执行效率:最好.最坏.平均 2. 我们之前舍弃的时间复杂度的系数.常量.低阶,在这里需要拿回来 3.排序,免不了比较和移动 二.内存消耗方面 没错就是 算法的空间复杂度,不过对于排序的空间复杂度来说,又赋予了新的名词 — 原地排序. 顾名思义是 原地排序的肯定是消耗内存少,反之需

排序算法JavaScript版

冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]) { // 相邻元素两两对比 var temp = arr[j+1]; // 元素交换 arr[j+1] = arr[j]; arr[j] = temp; } } } return arr