Isih cepat ialah algoritma rekursif yang membahagikan tatasusunan kepada elemen yang lebih kecil dan elemen yang lebih besar dan mengisihnya secara rekursif, manakala isihan gabungan membahagikan secara rekursif tatasusunan kepada tatasusunan yang lebih kecil, mengisih setiap tatasusunan kecil, dan kemudian menggabungkannya kembali ke dalam tatasusunan asal. Kod yang dilaksanakan oleh PHP ialah: Isih pantas: Bahagikan tatasusunan kepada elemen yang lebih kecil dan lebih besar daripada nilai garis dasar, dan kemudian isi setiap bahagian secara rekursif. Isih Gabung: Bahagikan tatasusunan secara rekursif kepada tatasusunan yang lebih kecil, susun setiap tatasusunan yang lebih kecil, dan kemudian gabungkan tatasusunan yang lebih kecil yang diisih kembali ke tatasusunan asal.

Isih cepat tatasusunan PHP lwn. isihan cantum
Apakah itu isihan cepat dan isihan cantum?
Isih cepat dan isihan cantum ialah kedua-dua algoritma biasa digunakan untuk mengisih tatasusunan.
-
Isih Pantas: Bahagikan tatasusunan kepada dua bahagian, satu mengandungi unsur yang lebih kecil dan satu lagi mengandungi unsur yang lebih besar, dan kemudian susun setiap bahagian secara rekursif.
-
Gabung isihan: Pisah tatasusunan secara rekursif kepada tatasusunan yang lebih kecil, susun setiap tatasusunan yang lebih kecil, dan kemudian cantumkan tatasusunan yang lebih kecil yang diisih kembali ke tatasusunan asal.
Pelaksanaan kod 是 Berikut ialah fungsi pengisihan dan penggabungan yang cepat dilaksanakan dengan PHP:
Penghapusan Pantas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function quickSort( $arr ) {
if ( count ( $arr ) <= 1) {
return $arr ;
}
$pivot = $arr [0];
$left = [];
$right = [];
for ( $i = 1; $i < count ( $arr ); $i ++) {
if ( $arr [ $i ] < $pivot ) {
$left [] = $arr [ $i ];
} else {
$right [] = $arr [ $i ];
}
}
return array_merge (quickSort( $left ), [ $pivot ], quickSort( $right ));
}
|
Salin selepas log masuk
E
Pengisihan Gabungan:
Kes Penyisihan Sampingan Array yang tidak teratur daripada integer
.Menggunakan quicksort:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function mergeSort( $arr ) {
$length = count ( $arr );
if ( $length <= 1) {
return $arr ;
}
$mid = floor ( $length / 2);
$left = array_slice ( $arr , 0, $mid );
$right = array_slice ( $arr , $mid );
return merge(mergeSort( $left ), mergeSort( $right ));
}
function merge( $left , $right ) {
$result = [];
$lIndex = $rIndex = 0;
while ( $lIndex < count ( $left ) && $rIndex < count ( $right )) {
if ( $left [ $lIndex ] < $right [ $rIndex ]) {
$result [] = $left [ $lIndex ++];
} else {
$result [] = $right [ $rIndex ++];
}
}
while ( $lIndex < count ( $left )) {
$result [] = $left [ $lIndex ++];
}
while ( $rIndex < count ( $right )) {
$result [] = $right [ $rIndex ++];
}
return $result ;
}
|
Salin selepas log masuk
Output:
1 2 | <strong> $sortedArray = quickSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r( $sortedArray );</strong>
|
Salin selepas log masuk
Menggunakan merge sort:
1 | [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
Salin selepas log masuk
Output: [5, 2, 8, 3, 1, 9, 4, 7, 6]
1 2 | $sortedArray = mergeSort([5, 2, 8, 3, 1, 9, 4, 7, 6]);
print_r( $sortedArray );
|
Salin selepas log masuk
Atas ialah kandungan terperinci Isih pantas tatasusunan PHP vs. isihan cantum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!