1. 程式人生 > >php 4大基礎演算法

php 4大基礎演算法

  /**
     * 氣泡排序
     * 思路:​每次迴圈排列出一個最大的數
     */
    public function mao_paoOp(){
        $data = array(5,2,6,4,3,1,9,8,4,5,14,25,41,12,52,32,42);
        $total = count($data);
        //迴圈控制需要冒的輪數
        for($i=0; $i<$total ; $i++){
            //每輪 冒出的數 比較
            for ($j=$i+1; $j<$total;$j++){
                if($data[$i]>$data[$j]){
                    //接收的空變數
                    $rem = $data[$i];
                    $data[$i] = $data[$j];
                    $data[$j] = $rem;
                }
            }
        }
        $this->response($data,2000);
    }
 /**
     * 選擇排序
     * 思路:每一趟在n-i+1(i = 1,2,…,n-1)個記錄中選擇關鍵字最小的記錄作為有序序列中第i個記錄,
     * 其中最簡單的是簡單選擇排序,其過程如下:通過n-i次關鍵字間的比較,
     * 從n-i+1個記錄中選擇出關鍵字最小的記錄,並各第i個記錄交換之。
     */
    public function select_mathOp(){
        $data = array(5,2,6,4,3,1,9,8,4,5,14,25,41,12,52,32,42);
        $total = count($data);
        for ($i=0;$i<$total;$i++){
            //假設最小值位置
            $p = $i;
            //當前需要比較的元數  $i的後面
            for ($j=$i+1;$j<$total;$j++){
                if($data[$p]>$data[$j]){
                    //發現有更小的  記錄
                    $p = $j;
                }
            }

            //發現最小的和當前的位置不一樣 對調
            if($p !=$i){
                $tem = $data[$p];
                $data[$p] = $data[$i];
                $data[$i] = $tem;
            }
        }
        $this->response($data,2000);
    }
    /**
     * 插入排序
     * 思路:通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,
     * 通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,
     * 需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間
     */
    public function insert_mathOp(){
        $data = array(5,2,6,4,3,1,9,8,4,5,14,25,41,12,52,32,42);
        $total = count($data);
        for ($i=1;$i<$total;$i++){
            $tmp = $data[$i];
            for ($j=$i-1;$j>=0;$j--){
                if($tmp<$data[$j]){
                    $data[$j+1] = $data[$j];
                    $data[$j] = $tmp;
                }else{
                    break;
                }
            }
        }
        $this->response($data,2000);
    }

 /**
     * 快速排序
     * 思路:先對陣列進行分割, 把大的元素數值放到一個臨時數組裡,
     * 把小的元素數值放到另一個臨時數組裡(這個分割的點可以是陣列中的任意一個元素值,一般用第一個元素,即$array[0]),
     * 然後繼續把這兩個臨時陣列重複上面拆分,最後把小的陣列元素和大的陣列元素合併起來。這裡用到了遞迴的思想。
     */
    public function quick_sort_mathOp(){
        $data = array(5,2,6,4,3,1,9,8,4,5,14,25,41,12,52,32,42);
        $data_tmp = $this->quick_sort($data);
        $this->response($data_tmp,2000);
    }

   /**
     * 使用遞迴方式
     * @param $data
     * @return array
     */
    public function quick_sort($data){
        $total = count($data);
        //遞迴的時候 要防止死迴圈
        if($total<=1){
            return $data;
        }
        $base_num = $data[0];
        $left_data   = array(); //小於
        $right_data  = array();  //大於
        for ($i=1;$i<$total;$i++){
            if($base_num>$data[$i]){
                $left_data[] = $data[$i];
            }else{
                $right_data[] = $data[$i];
            }
        }
        $left_data = $this->quick_sort($left_data);
        $right_data = $this->quick_sort($right_data);
        $data_tmp = array_merge($left_data,array($base_num),$right_data);
        return $data_tmp;
    }





相關推薦

php 4基礎演算法

/** * 氣泡排序 * 思路:​每次迴圈排列出一個最大的數 */ public function mao_paoOp(){ $data = a

php四種基礎演算法:冒泡,選擇,插入和快速排序法 程式碼練習

function maopao($arr,$len) { for($i=1;$i<$len;$i++) { for($j=0;$j<$len-$i;$j++) { if($arr[$j]>$arr[$j+1])

機器學習的10基礎演算法

機器學習演算法可以分為三個大類:監督學習、無監督學習、強化學習。其中: 監督學習對於有標籤的特定資料集(訓練集)是非常有效的,但是它需要對於其他的距離進行預測。 無監督學習對於在給定未標記的資料集(目標沒有提前指定)上發現潛在關係是非常有用的。 強化學習介於這兩者之間

程式設計師應該知道的10基礎演算法

    計算機演算法是在計算機上有限步內求解某一問題所使用的一組定義明確的規則或對解題步驟的精確描述,通俗點說,就是計算機解題的過程,即以一步接一步的方式詳細描述計算機如何將輸入轉化為所要求的輸出的過程,下面簡稱其為演算法。在這個過程中,無論是形成解題公式還是編寫程式,都是實施某種演算法,前者利用推理實現演

php 四種基礎演算法集合

// 排序演算法學習 // 1:氣泡排序 // 思路分析:在要排序的一組數中,對當前還未排好的序列,從前往後對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即,每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。 // //程式碼實現: $

PHP四種基礎演算法詳解

許多人都說 演算法是程式的核心,一個程式的好於差,關鍵是這個程式演算法的優劣。作為一個初級phper,雖然很少接觸到演算法方面的東西 。但是對於氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,我想還是要掌握的。 需求:分別用 氣泡排序法,快速排序法,選擇排序法,插入排序法將下面陣列中 的值按照從小

php四種基礎演算法

function quick_sort($arr) { //先判斷是否需要繼續進行 $length = count($arr); if($length <= 1) { return $arr; } //如果沒有返回,說明陣列內的元素個數 多餘1個,需要排序 //選擇一個標尺 //選擇第一個元素 $ba

PHP 四種基礎演算法

氣泡排序 思路:​每次迴圈排列出一個最大的數 選擇排序 ​思路:每一趟在n-i+1(i = 1,2,…,n-1)個記錄中選擇關鍵字最小的記錄作為有序序列中第i個記錄,其中最簡單的是簡單選擇排序

php四種基礎演算法程式碼例項

php四種基礎演算法:冒泡,選擇,插入和快速排序法 許多人都說 演算法是程式的核心,一個程式的好於差,關鍵是這個程式演算法的優劣。作為一個初級phper,雖然很少接觸到演算法方面的東西 。但是對於氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,我想還是要掌握的。下面是

PHP實現轉盤抽獎演算法例項

本文主要向大家介紹了PHP語言實現大轉盤抽獎演算法,通過具體的例項向大家展示,希望對大家學習PHP抽獎有所幫助。流程:1.拼裝獎項陣列,2.計算概率,3.返回中獎情況 程式碼如下:中獎概率 ' v ' 可以在後臺設定,傳到此方法中,注意傳整數 1 function get_gift(){ 2

程式設計師必知的10基礎實用性演算法

 轉載自:http://www.apkbus.com/portal.php?mod=view&aid=9839     演算法一:快速排序演算法

Java中4基本加密演算法解析 Java中4基本加密演算法解析

Java中4大基本加密演算法解析   Base64是網路上最常見的用於傳輸8Bit位元組程式碼的編碼方式之一,大家可以檢視RFC2045~RFC2049,上面有MIME的詳細規範。 簡單的java加密演算法有: BASE64

php計算樂透彩票演算法

//隨機5注 for($j=1;$j<=5;$j++) { //取前區號碼 1-35隨機5個數字 for($i=1;$i<=35;$i++){ $num=$i;

PHP演算法之四大基礎演算法

前言 雖然工作中,你覺得自己並沒有涉及到演算法這方面的東西,但是演算法是程式的核心,一個程式的好與差,關鍵是這個程式演算法的優劣,所以對於氣泡排序、插入排序、選擇排序、快速排序這四種基本演算法,我想還是要掌握的。 氣泡排序法 氣泡排序大概的意思是依次比較相鄰的兩個

基礎學習Java程式語言需要掌握4知識點

一、先明白瞭解什麼是Java的四個方面 初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯絡,分別有哪些應用。想想這些程式碼中用到了哪些知識點。不要一味地照著書本敲程式碼。而不去理解。 1.Java程式語言,即語法。 2.Jav

九章演算法 基礎演算法 強化演算法 系統設計 資料 安卓 leetcode 高清視訊

九章網站傳送門:http://sina.lt/eQc5 leetcode 直播視訊講座錄影 九章演算法視訊錄影,PPT 演算法班,演算法強化班,java入門與基礎演算法班,big data專案實戰班,Andriod專案實戰班 九章演算法下載 九章演算

Java初學者必備4核心基礎知識,小白必備!

很多Java程式設計初學者在剛接觸Java語言程式的時候,不知道該學習掌握哪些必要的基礎知識。本文小編總結了零基礎學習Java程式語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。 一、先了解什麼是Java的四個方面 初學者先弄清這些Java的基本概念也是必不可少的,死記

一些php基礎演算法

/** * @param $n * 拉斐那契數列 */ function fibonacci1($n) { if ($n == 1) { return [1]; } if ($n == 2) { return [1, 1]; }

資訊學奧賽一本通演算法(C++版)基礎演算法:高精度計算 高精度加法(位相加)

2018年資訊學奧賽NOIP資料下載 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 char a1[100],b1[100]; 6 int a[100],b[100],c[100];/

程式設計師必須知道的10基礎實用演算法及其講解:排序、查詢、搜尋和分類等

演算法一:快速排序演算法 快速排序是由東尼·霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要Ο(n log n)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(n log n) 演算法更快,因為它的內部迴圈(in