Rumah hujung hadapan web tutorial js JavaScript冒泡排序算法

JavaScript冒泡排序算法

Dec 19, 2016 pm 02:10 PM
jenis gelembung

via冒泡排序由于比较简单和容易理解,往往会成为人们首先想到的排序算法。最基本的想法就是在一次里面比较两个数字,并且确保他们在移动到其他项目之前有一个正确的顺序。在每一关结束,有价值的“排序”到正确的位置,最终只留下其他项目排序。原文来自:http://caibaojian.com/javascript-bubble-sort.html

算法实现思路

对比第一项和第二项

如果第一项应该在第二项的后面,交换他们

对比第二项和第三项

如果第二项应该在第三项之后,交换他们

持续直到数据结束

这个过程就是重复数次直到数据完全排序完毕,在每一次循环中,由于每一次的最后一项都是正确的排序,所以排序的项就越来越少。为了更好的理解,我们来进行一个数组对比一下:[3, 2, 4, 5, 1].

例子对比过程

首先是正排序,对比第一项和第二项,由于2比3小,所以3排到后面,结果是[2,3,4,5,1].

第二项和第三项,顺序是正确的,无须交换;第三项和第四项也是正确的,无须交换,第四项和第五项交换,结果为[2,3,4,1,5].

再次循环第一项和第二项,依次到第三项和第四项交换,为[2,3,1,4,5]

第三次循环,第二和第三交换为[2,1,3,4,5]

第四次循环,第一和第二交换为[1,2,3,4,5]

实现冒泡排序的第一步就是创建一个方法来交换数组里面的两项,这个方法在很多低效率的排序中是比较常见的。一个简单的javascript实现代码为:

function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}
Salin selepas log masuk

via如上所述,这个排序算法由于需要进行多次的排序,效率是比较低的。假设一个数组有n个项,那么则需要2的n次方来计算,让我们来看看这个原文来自:http://caibaojian.com/javascript-bubble-sort.html

正向冒泡算法

function bubbleSort(items){

    var len = items.length,
        i, j, stop;

    for (i=0; i < len; i++){
        for (j=0, stop=len-i; j < stop; j++){
            if (items[j] > items[j+1]){
                swap(items, j, j+1);
            }
        }
    }

    return items;
}
Salin selepas log masuk

via外面的循环是控制了循环周期数,里面的循环则是项与项之间的排序比较。

反向冒泡排序

function bubbleSort(items){
    var len = items.length,
        i, j;

    for (i=len-1; i >= 0; i--){
        for (j=len-i; j >= 0; j--){
            if (items[j] < items[j-1]){
                swap(items, j, j-1);
            }
        }
    }

    return items;
}
Salin selepas log masuk

via上面两个代码的结果是一样的,都是从小到大排序,只是循环的顺序略有不同,都是正序冒泡。

反序冒泡排序

其实就是判断大小改变,第一项小于第二项时,交换位置,依次类推。

function bubbleSort2(items){
var len = items.length,
i,j,stop;
for(i=0;i<len; i++){
for(j=0,stop=len-i;j<stop;j++){
if(items[j]<items[j+1]){
swap(items,j,j+1);
}
}
}
return items;
}
Salin selepas log masuk

总结

via再次说明一下,冒泡排序可能并不适用于你的实际工作中哦,它只是一个简单的工具帮助我们了解算法并且为进一步获取更多的知识打下基础。而我们用得最多的可能是内置的Array.prototype.sort() 原型方法,这是由于它具有更高效率。



更多JavaScript冒泡排序算法相关文章请关注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

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)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan 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)

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

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.

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)

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

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.

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