基数排序的PHP实现

Jul 29, 2016 am 08:59 AM
arr flag for gt

基数排序是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。

不妨通过一个具体的实例来展示一下,基数排序是如何进行的。
设有一个初始序列为: R {50, 123, 543, 187, 49, 30, 0, 2, 11, 100}。
我们知道,任何一个阿拉伯数,它的各个位数上的基数都是以0~9来表示的。
所以我们不妨把0~9视为10个桶。
我们先根据序列的个位数的数字来进行分类,将其分到指定的桶中。例如:R[0] = 50,个位数上是0,将这个数存入编号为0的桶中。
基数排序的PHP实现
分类后,我们在从各个桶中,将这些数按照从编号0到编号9的顺序依次将所有数取出来。

这时,得到的序列就是个位数上呈递增趋势的序列。
按照个位数排序: {50, 30, 0, 100, 11, 2, 123, 543, 187, 49}。
接下来,可以对十位数、百位数也按照这种方法进行排序,最后就能得到排序完成的序列。

<code><span><span><span><?php </span>
/**基数排序**/</span><span>/*
* 获取第几位上的数字
*
*百位数 = 2345%1000/100
*/</span><span><span>function</span><span>getN</span><span>(<span>$num</span>,<span>$N</span>)</span>{</span><span>$value</span> = <span>10</span>;
    <span>for</span>(<span>$i</span>=<span>1</span>;<span>$i</span>$N</span>;<span>$i</span>++){
        <span>$value</span> = <span>$value</span> * <span>10</span>; 
    }

    <span>$M</span> = (int)((<span>$num</span> % <span>$value</span> /(<span>$value</span>/<span>10</span>)));
    <span>return</span><span>$M</span>;
}
<span>/*
*/</span><span><span>function</span><span>paixu</span><span>(<span>$arr</span>)</span>
{</span><span>$flag</span> = <span>1</span>;<span>//该次位数上是否全为0标志位,全为0 flag=0</span><span>for</span>(<span>$M</span>=<span>1</span>;<span>$flag</span>!=<span>0</span>;<span>$M</span>++)
    {
        <span>$flag</span> = <span>0</span>;

        <span>if</span>(<span>$M</span> > <span>1</span>){
            <span>$m</span> = <span>0</span>;
            <span>for</span>(<span>$j</span>=<span>0</span>;<span>$j</span>10</span>;<span>$j</span>++){
                <span>for</span>(<span>$k</span>=<span>0</span>;<span>$k</span><count>$b[<span>$j</span>]);<span>$k</span>++){
                    <span>if</span>(<span>$b</span>[<span>$j</span>][<span>$k</span>]!=<span>0</span>)
                    <span>$arr</span>[<span>$m</span>++] = <span>$b</span>[<span>$j</span>][<span>$k</span>];<span>//将容器中的数按序取出,进行下一次排序</span>
                }

            }
            <span>$b</span> = <span>array</span>();<span>//再给b附新值前要清空数组中原有的数据</span>
        }

        <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><count>$arr);<span>$i</span>++)
        {
            <span>$thisNum</span> = getN(<span>$arr</span>[<span>$i</span>],<span>$M</span>);
            <span>if</span>(<span>$thisNum</span>!=<span>0</span>) <span>$flag</span> = <span>1</span>;
            <span>$b</span>[<span>$thisNum</span>][] = <span>$arr</span>[<span>$i</span>];<span>//将数组中的数放入容器中</span>        }

    }
    print_r(<span>$arr</span>);
    <span>//var_dump($b);</span>}
<span>/**基数排序**结束**/</span><span>?></span></count></count></code>
Salin selepas log masuk

paixu(array(65,3,45,6,7,8,31,100,1000,1234))
结果为:Array ( [0] => 3 [1] => 6 [2] => 7 [3] => 8 [4] => 31 [5] => 45 [6] => 65 [7] => 100 [8] => 1000 [9] => 1234 )

基数排序还可以应用在查找重复数,查找间隔数等方面
代码不重要(我的代码仍需改进),思路是关键

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了基数排序的PHP实现,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

17 cara untuk menyelesaikan skrin biru kernel_security_check_failure 17 cara untuk menyelesaikan skrin biru kernel_security_check_failure Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure (kegagalan pemeriksaan kernel) adalah jenis kod henti yang agak biasa Walau bagaimanapun, tidak kira apa sebabnya, ralat skrin biru menyebabkan ramai pengguna merasa tertekan dengan berhati-hati. 17 penyelesaian kepada skrin biru kernel_security_check_failure Kaedah 1: Alih keluar semua peranti luaran Apabila mana-mana peranti luaran yang anda gunakan tidak serasi dengan versi Windows anda, ralat skrin biru Kernelsecuritycheckfailure mungkin berlaku. Untuk melakukan ini, anda perlu mencabut semua peranti luaran sebelum cuba memulakan semula komputer anda.

Apakah perbezaan antara Huawei GT3 Pro dan GT4? Apakah perbezaan antara Huawei GT3 Pro dan GT4? Dec 29, 2023 pm 02:27 PM

Ramai pengguna akan memilih jenama Huawei apabila memilih jam tangan pintar Antaranya, Huawei GT3pro dan GT4 adalah pilihan yang sangat popular. Apakah perbezaan antara Huawei GT3pro dan GT4? 1. Rupa GT4: 46mm dan 41mm, bahan cermin kaca + badan keluli tahan karat + cangkang belakang gentian resolusi tinggi. GT3pro: 46.6mm dan 42.9mm, bahannya ialah kaca nilam + badan titanium/badan seramik + cangkerang belakang seramik 2. GT4 yang sihat: Menggunakan algoritma Huawei Truseen5.5+ terkini, hasilnya akan lebih tepat. GT3pro: Penambahan elektrokardiogram ECG dan saluran darah serta keselamatan

Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Betulkan: Alat snipping tidak berfungsi dalam Windows 11 Aug 24, 2023 am 09:48 AM

Mengapa Alat Snipping Tidak Berfungsi pada Windows 11 Memahami punca masalah boleh membantu mencari penyelesaian yang betul. Berikut ialah sebab utama Alat Snipping mungkin tidak berfungsi dengan betul: Focus Assistant dihidupkan: Ini menghalang Snipping Tool daripada dibuka. Aplikasi rosak: Jika alat snipping ranap semasa pelancaran, ia mungkin rosak. Pemacu grafik lapuk: Pemacu yang tidak serasi mungkin mengganggu alat snipping. Gangguan daripada aplikasi lain: Aplikasi lain yang sedang berjalan mungkin bercanggah dengan Alat Snipping. Sijil telah tamat tempoh: Ralat semasa proses naik taraf boleh menyebabkan penyelesaian mudah ini sesuai untuk kebanyakan pengguna dan tidak memerlukan sebarang pengetahuan teknikal khusus. 1. Kemas kini apl Windows dan Microsoft Store

Bagaimana untuk menyahpasang Skype for Business pada Win10? Bagaimana untuk menyahpasang sepenuhnya Skype pada komputer anda Bagaimana untuk menyahpasang Skype for Business pada Win10? Bagaimana untuk menyahpasang sepenuhnya Skype pada komputer anda Feb 13, 2024 pm 12:30 PM

Bolehkah skype Win10 dinyahpasang? Ini adalah soalan yang ingin diketahui oleh ramai pengguna, kerana ramai pengguna mendapati bahawa aplikasi ini disertakan dalam program lalai pada komputer mereka, dan mereka bimbang bahawa pemadamannya akan menjejaskan operasi sistem tapak web ini membantu pengguna Mari kita lihat dengan lebih dekat cara menyahpasang Skype for Business dalam Win10. Cara menyahpasang Skype for Business dalam Win10 1. Klik ikon Windows pada desktop komputer, dan kemudian klik ikon tetapan untuk masuk. 2. Klik "Guna". 3. Masukkan "Skype" dalam kotak carian dan klik untuk memilih hasil yang ditemui. 4. Klik "Nyahpasang". 5

Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Cara Membetulkan Ralat Tidak Dapat Menyambung ke App Store pada iPhone Jul 29, 2023 am 08:22 AM

Bahagian 1: Langkah Penyelesaian Masalah Awal Menyemak Status Sistem Apple: Sebelum menyelidiki penyelesaian yang rumit, mari kita mulakan dengan asas. Masalahnya mungkin tidak terletak pada peranti anda; Lawati halaman Status Sistem Apple untuk melihat sama ada AppStore berfungsi dengan betul. Jika terdapat masalah, anda hanya boleh menunggu Apple membetulkannya. Semak sambungan Internet anda: Pastikan anda mempunyai sambungan internet yang stabil kerana isu "Tidak dapat menyambung ke AppStore" kadangkala boleh dikaitkan dengan sambungan yang lemah. Cuba tukar antara Wi-Fi dan data mudah alih atau tetapkan semula tetapan rangkaian (Umum > Tetapkan Semula > Tetapkan Semula Tetapan Rangkaian > Tetapan). Kemas kini versi iOS anda:

Cara menggunakan untuk mencari faktorial n dalam JavaScript Cara menggunakan untuk mencari faktorial n dalam JavaScript Dec 08, 2021 pm 06:04 PM

Cara menggunakan for untuk mencari n faktorial: 1. Gunakan pernyataan "for (var i=1;i<=n;i){}" untuk mengawal julat lintasan gelung kepada "1~n"; badan, gunakan "cj *=i" Darab nombor daripada 1 kepada n, dan tetapkan hasil darab kepada pembolehubah cj 3. Selepas gelung berakhir, nilai pembolehubah cj ialah faktorial bagi n, dan kemudian keluarkannya.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Apakah perbezaan antara foreach dan for loop Apakah perbezaan antara foreach dan for loop Jan 05, 2023 pm 04:26 PM

Perbezaan: 1. untuk gelung melalui setiap elemen data melalui indeks, manakala untukSetiap gelung melalui elemen data tatasusunan melalui program asas JS 2. kerana boleh menamatkan pelaksanaan gelung melalui kata kunci rehat, tetapi untukSetiap tidak boleh; . for boleh mengawal pelaksanaan gelung dengan mengawal nilai pembolehubah gelung, tetapi forEach tidak boleh 4. untuk boleh memanggil pembolehubah gelung di luar gelung, tetapi forEach tidak boleh memanggil pembolehubah gelung di luar gelung 5. Kecekapan pelaksanaan bagi; adalah lebih tinggi daripada untukSetiap.

See all articles