国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

關(guān)于冒泡,二分法插入,快速排序算法的介紹

jacklove
發(fā)布: 2018-06-11 09:47:50
原創(chuàng)
2294人瀏覽過(guò)

1.冒泡排序算法
過(guò)程:

1.遍歷整個(gè)數(shù)組,每?jī)蓛上噜彽脑剡M(jìn)行比較,如$a[$i]>$a[$i+1]則互換位置,每次比較消除一個(gè)逆序。
2.每一次循環(huán)后,下次再需要循環(huán)的次數(shù)減少1。

<?php
// 冒泡排序
$arr = createarr(20);
printarr($arr);
popsort($arr);
printarr($arr);
function createarr($num=10){
    $arr = array();
    for($i=0; $i<$num; $i++){
        array_push($arr, mt_rand(0,999));
    }
    return $arr;
}
function printarr($arr){
    echo 'arr:'.implode(',', $arr).'<br>';
}
function popsort(&$arr){
    for($i=0,$length=count($arr)-1; $i<$length; $i++){
        for($j=0; $j<$length-$i; $j++){
            if($arr[$j]>$arr[$j+1]){
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }    
}
?>
登錄后復(fù)制

2.二分法插入排序

過(guò)程:
1.首先,原數(shù)組是一個(gè)有序序列,$low=0 $high=count($arr)-1。
2.將要插入的數(shù)與數(shù)組中間位置的元素進(jìn)行比較,
如果比中間元素大,則$low=$mid+1作為下一次判斷的數(shù)組開(kāi)頭。
如果比中間元素小,則$high=$mid-1作為下一次判斷的數(shù)組結(jié)尾。
3.直到$low>$high結(jié)束,$low就是新元素插入的位置。
4.將數(shù)組中從$low開(kāi)始的元素全部向后移動(dòng)一位,之后在$low位置插入新元素。?

<?php
// 二分法插入排序
$arr = createarr(20);
$key = mt_rand(0,99);
printarr($arr);
echo 'key='.$key.'<br>';
binsort($arr, $key);
printarr($arr);
function createarr($num=10){
    $arr = array();
    for($i=0; $i<$num; $i++){
        array_push($arr, mt_rand(0,99));
    }
    sort($arr); // 有序序列
    return $arr;
}
function printarr($arr){
    echo 'arr:'.implode(',', $arr).'<br>';
}
function binsort(&$arr, $key){
    $low = 0;
    $high = count($arr)-1;
    while($low<=$high){
        $m = $low + (int)(($high-$low)/2);
        $mkey = $arr[$m];
        if($key>=$mkey){
            $low = $m + 1;
        }else{
            $high = $m - 1;
        }
    }
    // 移動(dòng)插入位置之后的元素,插入新元素
    for($i=count($arr)-1; $i>=$low; $i--){
        $arr[$i+1] = $arr[$i];
    }
    $arr[$low] = $key;
}
?>
登錄后復(fù)制

3.快速排序
過(guò)程:

1. 在數(shù)組中找一個(gè)元素作為key,一般取數(shù)組第一個(gè)元素作為key?
2. i=0, j=數(shù)組長(zhǎng)度-1?
3. j-- 當(dāng) arr[j]4. i++ 當(dāng) arr[i]>key, arr[i]與arr[j]交換位置?
5. 重復(fù)3,4 直到 i==j 時(shí),完成。?
6. 將key分隔的左右兩組元素再分別執(zhí)行 1,2,3,4,5 (遞歸)。

<?php
// 快速排序
$arr = createarr(20);
printarr($arr);
quicksort($arr, 0, count($arr)-1);
printarr($arr);
function createarr($num=10){
    $arr = array();
    for($i=0; $i<$num; $i++){
        array_push($arr, mt_rand(0,999));
    }
    return $arr;
}
function printarr($arr){
    echo 'arr:'.implode(',', $arr).'<br>';
}
function quicksort(&$arr, $low, $high){
    if($low>=$high){
        return ;
    }
    $key = $arr[$low];
    $i = $low;
    $j = $high;
    $flag = 1;
    while($i!=$j){
        switch($flag){
            case 0:
                if($arr[$i]>$key){
                    $tmp = $arr[$i];
                    $arr[$i] = $arr[$j];
                    $arr[$j] = $tmp;
                    $flag = 1;
                }else{
                    $i++;
                }
                break;
            case 1:
                if($arr[$j]<$key){
                    $tmp = $arr[$i];
                    $arr[$i] = $arr[$j];
                    $arr[$j] = $tmp;
                    $flag = 0;
                }else{
                    $j--;
                }
                break;
        }
    }
    quicksort($arr, $low, $i-1);
    quicksort($arr, $i+1, $high);
}
?>
登錄后復(fù)制

? 本篇文章講解了于冒泡,二分法插入,快速排序算法,更多相關(guān)內(nèi)容請(qǐng)關(guān)注php中文網(wǎng)。

相關(guān)推薦:

如何通過(guò)php 過(guò)濾html標(biāo)記屬性類(lèi)

如何使用php 替換敏感字符串的相關(guān)操作

關(guān)于PHP 遍歷文件夾及文件類(lèi)及處理類(lèi)

以上就是關(guān)于冒泡,二分法插入,快速排序算法的介紹的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)