1. 程式人生 > >桶排序演算法實現-PHP

桶排序演算法實現-PHP

簡單意義上的桶排序:

  • 桶排序的原理是先安排N+1個桶作為容器,若資料範圍為N的話。
  • 然後將測試資料(所需排序的資料)進行迴圈,放入對應的桶內。資料一定是在範圍N內的
  • 最後,迴圈桶裡的元素,並且輸出,進行從大到小或從小到大的排序。

例如:

  • 我們的取值範圍是10,那麼就要定義一個 11長度的陣列$arr. 並且讓所有的元素值都為0
  • 然後,對需要排序的陣列進行迴圈 如5,3,5,2,8.(這邊取值範圍其實才8)
  • 將資料依次對應$arr桶陣列內元素,即 如果是5,則使$arr[5]++.
  • 這時候 $arr[2]=1 $arr[3]=1 $arr[5]=2 $arr[8]=1
  • 然後迴圈$arr的陣列,若$arr[2]=1
    ,則迴圈輸出元素2一次,$arr[5]=2,則迴圈輸出5兩次
  • 結果輸出即為 2 3 5 5 8
  • 如果迴圈數值是從大到小 則會是從大到小的排序
<?php

//設定預設陣列,預設值為0;
$arr = array();
for ($i = 0; $i <= 10; $i++) {
    $arr[$i] = 0;
}
//設定測試的五個資料
$arr1 = array(5, 3, 5, 2, 8);

//根據資料 對預設陣列的對應元素進行+1;  J的取值範圍不能等於$arr1陣列長度  
for ($j = 0; $j < count($arr1); $j++) {
    //這邊給相應的陣列值+1
$arr[$arr1[$j]]++; } //開始迴圈輸出 預設陣列 $arr 裡面相應的值 for ($k = 0; $k <= 10; $k++) { for ($l=1; $l <=$arr[$k]; $l++) { echo "$k </n>"; } } ?>

缺點:

  • 浪費空間.
  • 無法進行浮點資料的排序.

相關推薦

排序演算法實現-PHP

簡單意義上的桶排序: 桶排序的原理是先安排N+1個桶作為容器,若資料範圍為N的話。 然後將測試資料(所需排序的資料)進行迴圈,放入對應的桶內。資料一定是在範圍N內的。 最後,迴圈桶裡的元素,並且輸出

python實現排序演算法

前面我們講了桶排序演算法,現在我們用python程式碼來實踐一遍 #!/usr/bin/python # -*- coding: utf-8 -*- #桶排序 def bucket_sort(the_list): #設定全為0的陣列 all_list =

#Python實現簡易版“排序演算法

Python實現簡易版“桶排序”演算法 # -*- coding: utf-8 -*- # 簡易版桶排序演算法 import random fenshu = int(input("請輸入考試滿分:"

常見查詢和排序演算法PHP實現

下面分享一些最常見的演算法,用PHP如何實現。 1、氣泡排序 function bubble_sort($arr) { $n=count($arr); for($i=0;$i<

排序 - 算法 - PHP

算法 默認值 arr div pre AR highlight ech 排序 <?php //初始化數組,默認值為0; $arr = array(); for ($i = 0; $i <= 10; $i++) { $arr[$i] = 0

SWUST資料結構--希爾排序演算法實現

#include<iostream> using namespace std; int main(){ int i,n; int a[50]; cin>>n; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<

插入排序演算法實現

輸入:n個數(a1,a2........) 輸出:升序排列好的陣列 #include <stdio.h> #include <stdlib.h> int main() { int i,j,n,a[100]; printf("請輸入要排序的陣列

排序演算法實現

堆的定義: 堆排序:基本思路,將待排序的一維陣列看成是一個完全二叉樹,將其生成一個堆,由定義可知,根元素必定是最小值(或最大值),將根輸出,然後將剩餘元素再調整成堆。 生成堆的方法:將序列看成一棵完全二叉樹,從最後一個非終端結點[n/2]開始,將該點與它的左右子樹根結點比較,將最小的

快速排序演算法實現 C# 版本

採用遞迴思想 實現了 快速排序演算法 如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespa

快速排序演算法實現

快速排序演算法的原理: 將數列中任取一個數,將其左部放置比其小的數,其右部放置比其大的數。然後,對其左,右部遞迴執行這種分割過程。   原始碼如下:   INT32 SortedData[] = { 1, 3, 2, 112, 3854, 2382, 2839

高階排序演算法實現與優化

本文用到的測試資料生成的程式碼和分析:《測試資料自動生成》 文章圖片來源於 GitHub,網速不佳的朋友請點我看原文。 順便軟廣一下個人技術小站:godbmw.com。歡迎常來 ♪(^∇^*) 1. 談談高階排序 本文主要介紹高階排序演算法中的歸併排序和快速排序。他們有運用了分支思想,並且大多通過遞迴來實現。

[排序]雞尾酒排序演算法實現

作者 zhonglihao 演算法名 雞尾酒排序 Cocktail Sort 分類 排序 複雜度 % 大概是1/2 * n^2時間複雜度 形式與資料結構 M

java中幾種常見的排序演算法實現

在Java中得資料結構比較 | 資料機構 | 優點| 缺點 | |陣列 | 插入快,在直到下標得情況下可快速地存取| 查詢慢,刪除慢,大小固定 | |有序陣列 | 比無序得陣列查詢快|刪除和插入慢,大小固定 | |棧 | 提供後進先出方式的存取| 存取其他項很

排序演算法:希爾排序演算法實現及分析

希爾排序演算法介紹希爾排序是D.LShell 與1957年提出來的一種排序演算法,在這之前排序演算法的時間複雜度都是O(n^2),希爾排序演算法是突破這個時間複雜度的第一批演算法之一。我們知道直接插入排序演算法(不知道的請看:排序演算法:直接插入排序演算法實現及分析),在某些

希爾排序演算法實現(C++)

希爾排序是一種按照增量排序的方法。其中增量值是小於n的正整數。   shell排序的基本思想[1]是:     先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;然後,取第二個增量d2<d1重複上述的分組和排序,直

排序演算法集錦--php

1、插入排序 $num1 = array(5,2,4,6,1,3); $num2 = array(); //排序後的陣列 $num2[0] = $num1[0]; $max = $num1[0]; $min = $num1[0]; $min = $num1[0]; $index = 0; //插入排

Python學習——排序演算法實現

文章目錄 時間複雜度 空間複雜度 二分查詢 氣泡排序 選擇排序 插入排序 快速排序 歸併排序 計數排序 一直以來,我只是在大學學過C語言的資料結構中關於氣泡排序的演算法,到現在這麼多年也沒有學習過其它演算法,

JAVA隨時筆記(四):常用的排序演算法實現

1、氣泡排序 原理: 比較array[n]和array[n+1]的大小,把大的數交換到後面,即array[n]>array[n+1],就交換。迴圈到陣列最後,就可以把最大值找出來,放到array[length-1]上。 第二次迴圈,把第二大的數交換到

C#常用8種排序演算法實現以及原理簡介

public static class SortExtention    {        #region 氣泡排序        /*         * 已知一組無序資料a[1]、a[2]、……a[n],需將其按升序排列。首先比較a[1]與a[2]的值,若a[1]大於a[

o(n^)級別的排序演算法php原生sort效能對比

測試樣本為5000    測試結果原生sort:0.002000093460083氣泡排序:3.9222249984741選擇排序:2.8271610736847插入排序:1.9501118659973希爾排序:0.053003072738647希爾排序為o(n^)級別排序演