php 冒泡排序 快速排序,php冒泡排序_PHP教程
php 冒泡排序 快速排序,php冒泡排序
/******
1)冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。
2)对整列数两两交换一次,最小的数在最左边,每次都能得一个在剩下的数中的最小 的数,“冒”出来的数组成一个有序区间,剩下的值组成一无序区间,且有序区间中每一元素值都比无序区间的小。
3)快速排序:基准数,左右二个数组,递归调用,合并。
4)插入排序:排序区间分成二部分,左边有序,右边无序,从右区间取第一个元素插入左区间,若此元素比左边区间最右边的元素大,留在原处,若此元素比左 边区间最右边的元素小,则插在最右边5)元素的原位置,同时最右边元素右移一位,计算器减一,重新和前面的元素比较,直到前面的元素比要插入元素小为止,重复 上述步骤。
6)注意区间端点值的处理,及数组的第一个元素下标为0.
***/
<span><br />$a</span>=<span>array</span>('3','8','1','4','11','7'<span>); </span><span>print_r</span>(<span>$a</span><span>); </span><span>$len</span> = <span>count</span>(<span>$a</span><span>); </span><span>//</span><span>从小到大</span> <span>for</span>(<span>$i</span>=1;<span>$i</span><<span>$len</span>;<span>$i</span>++<span>) { </span><span>for</span>(<span>$j</span>=<span>$len</span>-1;<span>$j</span>>=<span>$i</span>;<span>$j</span>--<span>) </span><span>if</span>(<span>$a</span>[<span>$j</span>]<<span>$a</span>[<span>$j</span>-1<span>]) {</span><span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span> <span>$x</span>=<span>$a</span>[<span>$j</span><span>]; </span><span>$a</span>[<span>$j</span>]=<span>$a</span>[<span>$j</span>-1<span>]; </span><span>$a</span>[<span>$j</span>-1]=<span>$x</span><span>; } } </span><span>print_r</span>(<span>$a</span><span>); </span><span>//</span><span>另一种方法 从小到大</span> <span>$b</span>=<span>array</span>('4','3','8','9','2','1'<span>); </span><span>$len</span>=<span>count</span>(<span>$b</span><span>); </span><span>for</span>(<span>$k</span>=1;<span>$k</span><<span>$len</span>;<span>$k</span>++<span>) { </span><span>for</span>(<span>$j</span>=<span>$len</span>-1,<span>$i</span>=0;<span>$i</span><<span>$len</span>-<span>$k</span>;<span>$i</span>++,<span>$j</span>--<span>) </span><span>if</span>(<span>$b</span>[<span>$j</span>]<<span>$b</span>[<span>$j</span>-1<span>]){ </span><span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span> <span>$tmp</span>=<span>$b</span>[<span>$j</span><span>]; </span><span>$b</span>[<span>$j</span>]=<span>$b</span>[<span>$j</span>-1<span>]; </span><span>$b</span>[<span>$j</span>-1]=<span>$tmp</span><span>; } </span><span>print_r</span>(<span>$b</span><span>); </span><span>echo</span> " "<span>; } </span><span>//</span><span>下面的这个执行效率更高</span> <span>function</span> maopao(<span>$arr</span><span>) { </span><span>$len</span> = <span>count</span>(<span>$arr</span><span>); </span><span>for</span>(<span>$i</span>=1; <span>$i</span><<span>$len</span>; <span>$i</span>++)<span>//</span><span>最多做n-1趟排序</span> <span> { </span><span>$flag</span> = <span>false</span>; <span>//</span><span>本趟排序开始前,交换标志应为假</span> <span>for</span>(<span>$j</span>=<span>$len</span>-1;<span>$j</span>>=<span>$i</span>;<span>$j</span>--<span>) { </span><span>if</span>(<span>$arr</span>[<span>$j</span>]<<span>$arr</span>[<span>$j</span>-1])<span>//</span><span>交换记录</span> {<span>//</span><span>如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了</span> <span>$x</span>=<span>$arr</span>[<span>$j</span><span>]; </span><span>$arr</span>[<span>$j</span>]=<span>$arr</span>[<span>$j</span>-1<span>]; </span><span>$arr</span>[<span>$j</span>-1]=<span>$x</span><span>; </span><span>$flag</span> = <span>true</span>;<span>//</span><span>发生了交换,故将交换标志置为真</span> <span> } } </span><span>if</span>(! <span>$flag</span>)<span>//</span><span>本趟排序未发生交换,提前终止算法</span> <span>return</span> <span>$arr</span><span>; } } </span><span>$shuz</span> = <span>array</span>('2','4','1','8','5'<span>); </span><span>$bb</span> = maopao(<span>$shuz</span><span>); </span><span>print_r</span>(<span>$bb</span><span>); </span><span>//</span><span> 快速排序</span> <span>function</span> kuaisu(<span>$arr</span><span>){ </span><span>$len</span> = <span>count</span>(<span>$arr</span><span>); </span><span>if</span>(<span>$len</span> <= 1<span>){ </span><span>return</span> <span>$arr</span><span>; } </span><span>$key</span> = <span>$arr</span>[0<span>]; </span><span>$left_arr</span> = <span>array</span><span>(); </span><span>$right_arr</span> = <span>array</span><span>(); </span><span>for</span>(<span>$i</span>=1; <span>$i</span><<span>$len</span>;<span>$i</span>++<span>){ </span><span>if</span>(<span>$arr</span>[<span>$i</span>] <= <span>$key</span><span>){ </span><span>$left_arr</span>[] = <span>$arr</span>[<span>$i</span><span>]; }</span><span>else</span><span>{ </span><span>$right_arr</span>[] = <span>$arr</span>[<span>$i</span><span>]; } } </span><span>$left_arr</span> = kuaisu(<span>$left_arr</span><span>); </span><span>$right_arr</span> = kuaisu(<span>$right_arr</span><span>); </span><span>return</span> <span>array_merge</span>(<span>$left_arr</span>, <span>array</span>(<span>$key</span>), <span>$right_arr</span><span>); } </span><span>$arr</span> = <span>array</span>(23,98,54,2,9,62,34<span>); </span><span>print_r</span>(kuaisu(<span>$arr</span>));

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Teknologi penunjuk fungsi boleh meningkatkan kecekapan dan kebolehgunaan semula kod, khususnya seperti berikut: Kecekapan yang dipertingkatkan: Menggunakan penunjuk fungsi boleh mengurangkan kod pendua dan mengoptimumkan proses panggilan. Tingkatkan kebolehgunaan semula: Penunjuk fungsi membenarkan penggunaan fungsi umum untuk memproses data yang berbeza, meningkatkan kebolehgunaan semula program.

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Cara melaksanakan algoritma isihan gelembung dalam C# Bubble sort ialah algoritma pengisihan yang mudah tetapi berkesan yang menyusun tatasusunan dengan membandingkan elemen bersebelahan beberapa kali dan bertukar kedudukan. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan algoritma isihan gelembung menggunakan bahasa C# dan memberikan contoh kod khusus. Mula-mula, mari kita fahami prinsip asas jenis gelembung. Algoritma bermula dengan elemen pertama tatasusunan dan membandingkannya dengan elemen seterusnya. Jika elemen semasa lebih besar daripada elemen seterusnya, tukar kedudukan mereka jika elemen semasa lebih kecil daripada elemen seterusnya, simpannya

Bagaimana untuk menulis algoritma pengisihan tatasusunan PHP tersuai? Isih gelembung: Mengisih tatasusunan dengan membandingkan dan menukar elemen bersebelahan. Isih pilihan: Pilih elemen terkecil atau terbesar setiap kali dan tukarkannya dengan kedudukan semasa. Isih sisipan: Masukkan unsur satu demi satu ke dalam bahagian yang diisih.

Kerumitan algoritma pengisihan tatasusunan PHP: Isih buih: O(n^2) Isih pantas: O(nlogn) (purata) Isih gabung: O(nlogn)

Pemilihan algoritma pengoptimuman prestasi fungsi C++: Pilih algoritma yang cekap (seperti isihan pantas, carian binari). Kemahiran pengoptimuman: fungsi kecil sebaris, mengoptimumkan caching, mengelakkan salinan dalam dan membuka gelung. Kes praktikal: Apabila mencari kedudukan unsur maksimum tatasusunan, carian binari dan pengembangan gelung digunakan selepas pengoptimuman, yang sangat meningkatkan prestasi.

Go ialah bahasa pengaturcaraan yang semakin popular yang direka bentuk agar mudah ditulis, mudah dibaca dan mudah diselenggara, sambil turut menyokong konsep pengaturcaraan lanjutan. Kerumitan masa dan kerumitan ruang adalah konsep penting dalam algoritma dan analisis struktur data Mereka mengukur kecekapan pelaksanaan dan saiz memori program. Dalam artikel ini, kami akan menumpukan pada menganalisis kerumitan masa dan kerumitan ruang dalam bahasa Go. Kerumitan Masa Kerumitan masa merujuk kepada hubungan antara masa pelaksanaan sesuatu algoritma dan saiz masalah. Masa biasanya dinyatakan dalam tatatanda Big O

Penggunaan struktur data dan algoritma adalah penting dalam pengkomputeran awan untuk mengurus dan memproses sejumlah besar data. Struktur data biasa termasuk tatasusunan, senarai, jadual cincang, pepohon dan graf. Algoritma yang biasa digunakan termasuk algoritma pengisihan, algoritma carian dan algoritma graf. Dengan memanfaatkan kuasa Java, pembangun boleh menggunakan koleksi Java, struktur data selamat benang dan Koleksi Apache Commons untuk melaksanakan struktur dan algoritma data ini.
