Rumah > pembangunan bahagian belakang > tutorial php > php实现冒泡排序多种方案

php实现冒泡排序多种方案

韦小宝
Lepaskan: 2023-03-20 11:56:02
asal
3706 orang telah melayarinya

在实际PHP开发中我们会遇到很多排序,而冒泡排序也是常见之一,想要做好PHP开发,那么我们肯定要很轻松的使用PHP来实现冒泡排序,本篇文章来给大家讲讲PHP冒泡排序!我们一起来看看PHP实现冒泡排序的多种方法吧!

冒泡排序是非常容易理解和实现,以从小到大排序举例:
数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。

方案一:

<?php
function bubble1_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = 0; $i < $count; $i++) {
        for ($j = 0; $j < $count; $j++) {
            if ($array[$i] < $array[$j]) {
                $temp = $array[$i];
                $array[$i] = $array[$j];
                $array[$j] = $temp;
            }
        }
    }
    return $array;
}
Salin selepas log masuk

方案二:

<?php
function bubble2_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = 0; $i < $count; $i++) {
        for ($j = 1; $j < $count - $i; $j++) {
            if ($array[$j - 1] > $array[$j]) {
                $temp = $array[$j - 1];
                $array[$j - 1] = $array[$j];
                $array[$j] = $temp;
            }
        }
    }
    return $array;
}
Salin selepas log masuk

方案三:

设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显如果有一趟没有发生交换,说明排序已经完成。

<?php
function bubble3_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    $flag = true;
    $j = $count;
    while ($flag) {
        $flag = false;
        for ($i = 1; $i < $j; $i++) {
            if ($array[$i - 1] > $array[$i]) {
                $temp = $array[$i - 1];
                $array[$i - 1] = $array[$i];
                $array[$i] = $temp;
                $flag = true;
            }
        }
        $j--;
    }
    return $array;
}
Salin selepas log masuk

方案四:

如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到这个位置就可以了。

<?php

function bubble4_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    $flag = $count;
    while ($flag > 0) {
        $k = $flag;
        $flag = 0;
        for ($j = 1; $j < $k; $j++) {
            if ($array[$j - 1] > $array[$j]) {
                $temp = $array[$j - 1];
                $array[$j - 1] = $array[$j];
                $array[$j] = $temp;
                $flag = $j;
            }
        }
    }
    return $array;
}
Salin selepas log masuk

方案五:

<?php

function bubble_sort($array)
{
    $count = count($array);
    if ($count <= 1) {
        return $array;
    }
    for ($i = $count - 1; $i > 0; $i--) {
        $flag = false;
        for ($j = 0; $j < $count; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
                $flag = true;
            }
        }
        if (!$flag)
            break;
    }
    return $array;
}
Salin selepas log masuk

以上就是PHP实现冒泡排序的多种方法以一共五种其实理解了一种的原理其他的四种自然也就懂了!需要对大家学习PHP提供到帮助!

相关文章推荐:

php实现冒泡排序

快速排序,插入排序:php实现冒泡排序,选择排序,插入排序和快速排序......


Atas ialah kandungan terperinci php实现冒泡排序多种方案. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan