Jadual Kandungan
php 冒泡排序 快速排序,php冒泡排序
Rumah pembangunan bahagian belakang tutorial php php 冒泡排序 快速排序,php冒泡排序_PHP教程

php 冒泡排序 快速排序,php冒泡排序_PHP教程

Jul 12, 2016 am 09:03 AM
jenis gelembung

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>));
Salin selepas log masuk

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1082224.htmlTechArticlephp 冒泡排序 快速排序,php冒泡排序 /****** 1)冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。 2)对整列数两两交换...
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ubah kod dengan petunjuk fungsi C++: tingkatkan kecekapan dan kebolehgunaan semula Ubah kod dengan petunjuk fungsi C++: tingkatkan kecekapan dan kebolehgunaan semula Apr 29, 2024 pm 06:45 PM

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 dan algoritma data Java: penjelasan mendalam Struktur dan algoritma data Java: penjelasan mendalam May 08, 2024 pm 10:12 PM

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.

Bagaimana untuk melaksanakan algoritma isihan gelembung dalam C# Bagaimana untuk melaksanakan algoritma isihan gelembung dalam C# Sep 19, 2023 am 11:10 AM

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

Panduan untuk menulis algoritma pengisihan tersuai untuk tatasusunan PHP Panduan untuk menulis algoritma pengisihan tersuai untuk tatasusunan PHP Apr 27, 2024 pm 06:12 PM

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.

Analisis kerumitan pelbagai algoritma pengisihan tatasusunan PHP Analisis kerumitan pelbagai algoritma pengisihan tatasusunan PHP Apr 27, 2024 am 09:03 AM

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

Pemilihan algoritma dan teknik pengoptimuman dalam pengoptimuman prestasi fungsi C++ Pemilihan algoritma dan teknik pengoptimuman dalam pengoptimuman prestasi fungsi C++ Apr 23, 2024 pm 06:18 PM

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.

Analisis kerumitan masa dan kerumitan ruang dalam bahasa Go Analisis kerumitan masa dan kerumitan ruang dalam bahasa Go Mar 27, 2024 am 09:24 AM

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

Struktur dan Algoritma Data Java: Panduan Praktikal untuk Pengkomputeran Awan Struktur dan Algoritma Data Java: Panduan Praktikal untuk Pengkomputeran Awan May 09, 2024 am 08:12 AM

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.

See all articles