Rumah >pembangunan bahagian belakang >masalah PHP >Mari kita bincangkan tentang kaedah pengisihan yang biasa digunakan (algoritma) dalam PHP

Mari kita bincangkan tentang kaedah pengisihan yang biasa digunakan (algoritma) dalam PHP

PHPz
PHPzasal
2023-03-24 15:22:111556semak imbas

Sebagai bahasa pengaturcaraan yang penting, PHP sebenarnya berprestasi baik dalam banyak aspek. Dalam pemprosesan data, algoritma pengisihan adalah bahagian yang paling biasa dan penting. PHP menyediakan pelbagai algoritma pengisihan Berikut adalah pengenalan terperinci kepada kaedah pengisihan yang biasa digunakan dalam PHP.

  1. Isih gelembung

Isih gelembung ialah salah satu algoritma pengisihan paling klasik dalam PHP. Algoritma ini melengkapkan pengisihan dengan merentasi dan membandingkan saiz dua elemen bersebelahan, dan kemudian menukar pesanan secara berterusan. Kaedah ini boleh dilaksanakan menggunakan gelung for atau gelung while.

<?php
function bubble_sort($arr){
    $length = count($arr);
    for($i=0;$i<$length;$i++){
        for($j=$i+1;$j<$length;$j++){
            if($arr[$i]>$arr[$j]){
                $tmp = $arr[$i];
                $arr[$i] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    return $arr;
}
  1. Isih Pantas

Isih Pantas ialah salah satu algoritma pengisihan terpantas dalam PHP. Algoritma ini menggunakan kaedah rekursif untuk membahagi tatasusunan kepada dua bahagian, menggunakan satu elemen pangsi pada satu masa untuk membahagi tatasusunan kepada subarray yang lebih kecil dan lebih besar. Selepas itu, sub-tatasusunan terus diisih secara rekursif, dan akhirnya tatasusunan yang diisih diperolehi.

Terdapat banyak cara untuk melaksanakan isihan pantas dalam PHP, seperti kaedah rekursif dan bukan rekursif.

<?php
function quick_sort($arr){
    $length = count($arr);
    if($length<=1){
        return $arr;
    }
    $left_array = array();
    $right_array = array();
    $middle = $arr[0];
    for($i=1;$i<$length;$i++){
        if($arr[$i]<$middle){
            $left_array[] = $arr[$i];
        }else{
            $right_array[] = $arr[$i];
        }
    }
    $left_array = quick_sort($left_array);
    $right_array = quick_sort($right_array);
    return array_merge($left_array, array($middle), $right_array);
}
  1. Isih pilihan

Isihan pilihan ialah satu lagi algoritma pengisihan klasik dalam PHP. Algoritma ini berfungsi dengan mencari elemen terkecil dalam tatasusunan dan meletakkannya di hadapan tatasusunan, kemudian melakukan perkara yang sama untuk elemen yang tinggal. Kerumitan masa algoritma ini ialah O(n²).

<?php
function select_sort($arr){
    $length = count($arr);
    for($i=0;$i<$length;$i++){
        $min = $i;
        for($j=$i+1;$j<$length;$j++){
            if($arr[$j]<$arr[$min]){
                $min = $j;
            }
        }
        if($min!=$i){
            $tmp = $arr[$i];
            $arr[$i] = $arr[$min];
            $arr[$min] = $tmp;
        }
    }
    return $arr;
}
  1. Isih sisipan

Isihan sisipan ialah satu lagi algoritma pengisihan mudah dalam PHP. Algoritma ini membandingkan saiz dan kedudukan elemen semasa dengan elemen yang diisih sebelum ini, dan kemudian memasukkan elemen ke kedudukan yang sesuai. Kerumitan masa algoritma ini ialah O(n²).

<?php
function insert_sort($arr){
    $length = count($arr);
    for($i=1;$i<$length;$i++){
        $tmp = $arr[$i];
        $j = $i-1;
        while($j>=0 && $arr[$j]>$tmp){
            $arr[$j+1] = $arr[$j];
            $j--;
        }
        $arr[$j+1] = $tmp;
    }
    return $arr;
}

Ringkasan:

Empat kaedah pengisihan di atas ialah algoritma pengisihan biasa dalam PHP. Dalam aplikasi praktikal, isihan pemilihan dan isihan sisipan biasanya digunakan untuk mengisih sejumlah kecil data, isihan gelembung lebih biasa digunakan apabila saiz data kecil, dan isihan pantas ialah algoritma pengisihan yang paling biasa digunakan apabila saiz data adalah besar. Pembangun boleh memilih algoritma pengisihan yang sesuai berdasarkan situasi sebenar.

Atas ialah kandungan terperinci Mari kita bincangkan tentang kaedah pengisihan yang biasa digunakan (algoritma) dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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