cari
Rumahphp教程php手册php冒泡排序快速排序

php冒泡排序快速排序

Jul 06, 2016 pm 01:30 PM
phppertukarangelembungcepatmenyusunnilai berangka

/****** 1)冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。 2)对整列数两两交换一次,最小的数在最左边,每次都能得一个在剩下的数中的最小 的数,冒出来的数组成一个有序区间,剩下的值组成一无序区间,且有序区间中每一元素值都比无

/******
1)冒泡排序:两两交换数值,最小的值在最左边,就如最轻的气泡在最上边。
2)对整列数两两交换一次,最小的数在最左边,每次都能得一个在剩下的数中的最小 的数,“冒”出来的数组成一个有序区间,剩下的值组成一无序区间,且有序区间中每一元素值都比无序区间的小。
3)快速排序:基准数,左右二个数组,递归调用,合并。
4)插入排序:排序区间分成二部分,左边有序,右边无序,从右区间取第一个元素插入左区间,若此元素比左边区间最右边的元素大,留在原处,若此元素比左 边区间最右边的元素小,则插在最右边5)元素的原位置,同时最右边元素右移一位,计算器减一,重新和前面的元素比较,直到前面的元素比要插入元素小为止,重复 上述步骤。
6)注意区间端点值的处理,及数组的第一个元素下标为0.
***/

<span style="color: #800080;"><br>$a</span>=<span style="color: #0000ff;">array</span>('3','8','1','4','11','7'<span style="color: #000000;">);
</span><span style="color: #008080;">PRint_r</span>(<span style="color: #800080;">$a</span><span style="color: #000000;">);
</span><span style="color: #800080;">$len</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">$a</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">从小到大</span>
<span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=1;<span style="color: #800080;">$i</span>$len;<span style="color: #800080;">$i</span>++<span style="color: #000000;">)
{
</span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$j</span>=<span style="color: #800080;">$len</span>-1;<span style="color: #800080;">$j</span>>=<span style="color: #800080;">$i</span>;<span style="color: #800080;">$j</span>--<span style="color: #000000;">)
</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$a</span>[<span style="color: #800080;">$j</span>]$a[<span style="color: #800080;">$j</span>-1<span style="color: #000000;">])
{</span><span style="color: #008000;">//</span><span style="color: #008000;">如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span>
 <span style="color: #800080;">$x</span>=<span style="color: #800080;">$a</span>[<span style="color: #800080;">$j</span><span style="color: #000000;">];
 </span><span style="color: #800080;">$a</span>[<span style="color: #800080;">$j</span>]=<span style="color: #800080;">$a</span>[<span style="color: #800080;">$j</span>-1<span style="color: #000000;">];
 </span><span style="color: #800080;">$a</span>[<span style="color: #800080;">$j</span>-1]=<span style="color: #800080;">$x</span><span style="color: #000000;">;
}
}
</span><span style="color: #008080;">print_r</span>(<span style="color: #800080;">$a</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">另一种方法 从小到大</span>
<span style="color: #800080;">$b</span>=<span style="color: #0000ff;">array</span>('4','3','8','9','2','1'<span style="color: #000000;">);
</span><span style="color: #800080;">$len</span>=<span style="color: #008080;">count</span>(<span style="color: #800080;">$b</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$k</span>=1;<span style="color: #800080;">$k</span>$len;<span style="color: #800080;">$k</span>++<span style="color: #000000;">)
{
</span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$j</span>=<span style="color: #800080;">$len</span>-1,<span style="color: #800080;">$i</span>=0;<span style="color: #800080;">$i</span>$len-<span style="color: #800080;">$k</span>;<span style="color: #800080;">$i</span>++,<span style="color: #800080;">$j</span>--<span style="color: #000000;">)
</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$b</span>[<span style="color: #800080;">$j</span>]$b[<span style="color: #800080;">$j</span>-1<span style="color: #000000;">]){
</span><span style="color: #008000;">//</span><span style="color: #008000;">如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了</span>
 <span style="color: #800080;">$tmp</span>=<span style="color: #800080;">$b</span>[<span style="color: #800080;">$j</span><span style="color: #000000;">];
 </span><span style="color: #800080;">$b</span>[<span style="color: #800080;">$j</span>]=<span style="color: #800080;">$b</span>[<span style="color: #800080;">$j</span>-1<span style="color: #000000;">];
 </span><span style="color: #800080;">$b</span>[<span style="color: #800080;">$j</span>-1]=<span style="color: #800080;">$tmp</span><span style="color: #000000;">;
}
</span><span style="color: #008080;">print_r</span>(<span style="color: #800080;">$b</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">echo</span> "
"<span style="color: #000000;">;
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">下面的这个执行效率更高</span>
<span style="color: #0000ff;">function</span> maopao(<span style="color: #800080;">$arr</span><span style="color: #000000;">)
{
 </span><span style="color: #800080;">$len</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">$arr</span><span style="color: #000000;">);
 </span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=1; <span style="color: #800080;">$i</span>$len; <span style="color: #800080;">$i</span>++)<span style="color: #008000;">//</span><span style="color: #008000;">最多做n-1趟排序</span>
<span style="color: #000000;"> {
  </span><span style="color: #800080;">$flag</span> = <span style="color: #0000ff;">false</span>;    <span style="color: #008000;">//</span><span style="color: #008000;">本趟排序开始前,交换标志应为假</span>
  <span style="color: #0000ff;">for</span>(<span style="color: #800080;">$j</span>=<span style="color: #800080;">$len</span>-1;<span style="color: #800080;">$j</span>>=<span style="color: #800080;">$i</span>;<span style="color: #800080;">$j</span>--<span style="color: #000000;">)
  {
   </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$arr</span>[<span style="color: #800080;">$j</span>]$arr[<span style="color: #800080;">$j</span>-1])<span style="color: #008000;">//</span><span style="color: #008000;">交换记录</span>
   {<span style="color: #008000;">//</span><span style="color: #008000;">如果是从大到小的话,只要在这里的判断改成if($arr[$j]>$arr[$j-1])就可以了</span>
     <span style="color: #800080;">$x</span>=<span style="color: #800080;">$arr</span>[<span style="color: #800080;">$j</span><span style="color: #000000;">];
     </span><span style="color: #800080;">$arr</span>[<span style="color: #800080;">$j</span>]=<span style="color: #800080;">$arr</span>[<span style="color: #800080;">$j</span>-1<span style="color: #000000;">];
     </span><span style="color: #800080;">$arr</span>[<span style="color: #800080;">$j</span>-1]=<span style="color: #800080;">$x</span><span style="color: #000000;">;
     </span><span style="color: #800080;">$flag</span> = <span style="color: #0000ff;">true</span>;<span style="color: #008000;">//</span><span style="color: #008000;">发生了交换,故将交换标志置为真</span>
<span style="color: #000000;">   }
  }
  </span><span style="color: #0000ff;">if</span>(! <span style="color: #800080;">$flag</span>)<span style="color: #008000;">//</span><span style="color: #008000;">本趟排序未发生交换,提前终止算法</span>
  <span style="color: #0000ff;">return</span> <span style="color: #800080;">$arr</span><span style="color: #000000;">;   
 }
}
</span><span style="color: #800080;">$shuz</span> = <span style="color: #0000ff;">array</span>('2','4','1','8','5'<span style="color: #000000;">);
</span><span style="color: #800080;">$bb</span> = maopao(<span style="color: #800080;">$shuz</span><span style="color: #000000;">);
</span><span style="color: #008080;">print_r</span>(<span style="color: #800080;">$bb</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 快速排序</span>
<span style="color: #0000ff;">function</span> kuaisu(<span style="color: #800080;">$arr</span><span style="color: #000000;">){
    </span><span style="color: #800080;">$len</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">$arr</span><span style="color: #000000;">);
    </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$len</span> ){
        <span style="color: #0000ff;">return</span> <span style="color: #800080;">$arr</span><span style="color: #000000;">;
    }
    </span><span style="color: #800080;">$key</span> = <span style="color: #800080;">$arr</span>[0<span style="color: #000000;">];
    </span><span style="color: #800080;">$left_arr</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">();
    </span><span style="color: #800080;">$right_arr</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">();
    </span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=1; <span style="color: #800080;">$i</span>$len;<span style="color: #800080;">$i</span>++<span style="color: #000000;">){
        </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$arr</span>[<span style="color: #800080;">$i</span>] $key<span style="color: #000000;">){
            </span><span style="color: #800080;">$left_arr</span>[] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$i</span><span style="color: #000000;">];
        }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{
            </span><span style="color: #800080;">$right_arr</span>[] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$i</span><span style="color: #000000;">];
        }
    }
    </span><span style="color: #800080;">$left_arr</span> = kuaisu(<span style="color: #800080;">$left_arr</span><span style="color: #000000;">);
    </span><span style="color: #800080;">$right_arr</span> = kuaisu(<span style="color: #800080;">$right_arr</span><span style="color: #000000;">);
    </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">array_merge</span>(<span style="color: #800080;">$left_arr</span>, <span style="color: #0000ff;">array</span>(<span style="color: #800080;">$key</span>), <span style="color: #800080;">$right_arr</span><span style="color: #000000;">);
}
</span><span style="color: #800080;">$arr</span> = <span style="color: #0000ff;">array</span>(23,98,54,2,9,62,34<span style="color: #000000;">);
</span><span style="color: #008080;">print_r</span>(kuaisu(<span style="color: #800080;">$arr</span>));

 


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

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 laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft