1. 程式人生 > >PHP 選擇排序

PHP 選擇排序

作為一個初級phper,平時用到的演算法很少,但是基本的幾種演算法還是要掌握的,比如選擇排序。

需求:分別用選擇排序演算法將下面陣列中的值按照從小到的順序進行排序。 
要排序的陣列:$arr(1,34,555,63,21,66,32,78,36,76,25);
思路分析:每次選擇一個相應的元素,然後將其放到指定的位置。 

<?php
/* 
 * 選擇排序
 * 每次選擇一個相應的元素,然後將其放到指定的位置
 * date 2017-1-20
 * author 瘋狂老司機
 */
$arr=array(1,34,555,63,21,66,32,78,36,76,25);
function select_sort($arr) 
{
    //實現思路 雙重迴圈完成,外層控制輪數,當前的最小值。內層 控制的比較次數,$i 當前最小值的位置, 需要參與比較的元素
    for($i=0, $len=count($arr); $i<$len-1; $i++)
    {
        //先假設最小的值的位置
        $p = $i;
        //$j 當前都需要和哪些元素比較,$i 後邊的。
        for($j=$i+1; $j<$len; $j++) 
        {
            //$arr[$p] 是 當前已知的最小值
            if($arr[$p] > $arr[$j]) 
            {
                //比較,發現更小的,記錄下最小值的位置;並且在下次比較時,應該採用已知的最小值進行比較。
                $p = $j;
            }
        }
        //已經確定了當前的最小值的位置,儲存到$p中。如果發現 最小值的位置與當前假設的位置$i不同,則位置互換即可。
        if($p != $i)
        {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }

    return $arr;
}

var_dump(select_sort($arr));

?>


相關推薦

PHP選擇排序算法

相同 大循環 如果 最小值 alt src str pan AS 說明:   通過假設一個最小數的key,來逐個比較後面的值,如果假設的值大於後面的值,則互換位置。 示例: <?php $a = array(2,13,42,34,56,23,67,365,87

PHP 選擇排序

作為一個初級phper,平時用到的演算法很少,但是基本的幾種演算法還是要掌握的,比如選擇排序。 需求:分別用選擇排序演算法將下面陣列中的值按照從小到的順序進行排序。  要排序的陣列:$arr(1,

php選擇排序

1、選擇排序法例項詳解: <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> </head> <body

PHP選擇排序

數據 fin select 最小 php ref 接下來 pri 開始 選擇排序,非常的直觀,也相對簡單。 思路如下: 假設,從小到大排序。 首先,第一輪循環,從所有數組中,找出最小的元素,然後將其下標記錄下來。 然後,確定不是第一個元素,則和第一個元素進行交換。

選擇排序-Python與PHP實現版

blog 性能 null pytho int color += log 時間 選擇排序Python實現 import random # 生成待排序數組 a=[random.randint(1,999) for x in range(0,36)] # 選擇排序 def

PHP冒泡排序選擇排序、插入排序

while blog div clas HP 下標 位置 設置 所在 $arr = [1, 8, 7, 5, 4, 2, 11, 9, 20]; 冒泡排序: for ($i = 0; $i < count($arr); $i ++) { for ($j =

PHP排序算法:選擇排序

找到 例如 ray ++ 內置 位數 RR str int 在PHP中實現數字排序很簡單,我們可以將字符串轉成數組,例如: $string = ‘94132768‘; 通過 $arr = str_split(($string); 轉成數組:$arr = array(9,4

[PHP] 算法-選擇排序PHP實現

com sel 循環 最小 src i+1 實現 分享 sele 選擇排序: 1.數組分成前後兩個部分,前部分是排序的,後部分是無序的 2.兩層循環,先假定當前循環的第一個索引為最小值,內部循環找比該索引還小的值,找到交換 for i;i<len;i++

選擇排序--php實現

原理:每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完.。 <?php /** * 選擇排序 * 資料結構----------------陣列 * 最差時間複雜度-----------O(n^2) * 最優時間複雜度

PHP 常見4種排序 氣泡排序選擇排序、插入排序、快速排序

1、氣泡排序 原理:對一組資料,比較相鄰數的大小,將值大的放到後面。 <?php // 氣泡排序 function bubbleOrder($arr) { $count = count($arr); $temp = 0; // 外層控制排序次數 for ($

PHP學習筆記』系列五:選擇排序

演算法原理: 選擇排序(Selection sort)是一種簡單直觀的排序演算法。 它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 求得一個數組的最大值的下標,並將這個最大值下標的單元跟最後一個單元

PHP排序演算法之選擇排序

二、選擇排序   原理: 在一列數字中,選出最小數與第一個位置的數交換。然後在剩下的數當中再找最小的與第二個位置的數交換,如此迴圈到倒數第二個數和最後一個數比較為止。(以下都是升序排列,即從小到大排列)   舉例說明: $arr = array(6, 3, 8, 2, 9, 1);   第一輪:   

PHP選擇排序的演算法理解

選擇排序,原理: 在每一次大迴圈的時候得出一個最大值或者最小值來替換相應的位置,看程式碼: <?php $arr = [3,2,4,7,5]; for($i=0;$i<count($arr);$i++){      //第一次迴圈假設第一個元

選擇排序的原理及php實現

<?php function xuanze_sort($arr){ $length = count($arr); //計算序列長度 for($i=0;$i<$length-

PHP 陣列排序(氣泡排序選擇排序);陣列查詢(順序查詢、二分查詢)

<?php header('Content-Type:text/html;charset=utf8'); //二分查詢 //有2個前提:1.陣列已經排好序;2.是連續的索引陣列,即下標為0,1,2,3,4,5... class Search{ /** * * @param arr:已經排好序

php 簡單氣泡排序選擇排序

<span style="font-size:18px;">//氣泡排序 $arr=array(2,1,3,6,5,4,8,7,9,15,12,16); $n=count($arr); for ($i=0; $i <$n-1; $i++) { for

每天一算法 -- (選擇排序

大量 print 排好序 sort 數據 但是 main 出了 測試 一、原理   每一趟從待排序的數中,選出最小的元素,並將 最小的元素 換到 趟數 對應的位置上。 二、思路  1.假設有一個數組為 [n個數],第一趟先選出 最小的元素 min[k],將min[k

JavaScript ,Python,java,Go系列算法之選擇排序

javascript java python go系列算法之選擇排序 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸並排序、快速排序、堆排序、基數排序等。用一張圖概括:選擇排序 選擇排序是一種簡單直觀的排序算法,無論什麽數據進去都是O(n2) 的時間復雜度。所以用到它的

JAVA選擇排序

span length oid ava col color str i+1 system JAVA選擇排序: public class xz { public static void main(String[] args){ int[] arr={

Java 選擇排序

onu ets clas class eth ner generate ger nbsp 選擇排序,每次將最小的數選出來,反復執行兩個動作,比較、交換,放在最左邊,依次類推,用數組實現選擇排序 交換兩個數 public class SwapTwo {