js实现冒泡排序

冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

原理:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

js实现:

 1 var flag = false;
 2 var x = 0;//计算转换的次数
 3 var arr = [35,88,16,27,32,4,90,56,79];
 4    for(var j = 0;j<arr.length-1;j++){
 5 //大的排序次数(arr.length-1)
 6 // 为什么要arr.length-1。假如是9个数,第一趟就把最大的数固定了,第二趟就把第二大的数固定了,
 7 //每排一趟就固定了一个大数,第八趟就固定了第 八大的数,9个数8个位置都已经定下来了,那么剩下的数就是最小的数(第九大的数),
 8 //所以就不用再排了,9个数,只需要排8趟,n个数,只需n-1趟
 9     for(var i = 0;i<arr.length-1;i++){
10 //小的排序,不停两两交换,
11 //为什么要减i,因为每定义一个大数,后面的两两交换循环就减少一次。
12 //假设为9个数,如第一趟,i=0,两两循环的次数为arr.length-1,8次;第二趟,i=1,
13 //两两交换循环的次数就为arr.length-1,7次,因为已经把最大的数固定了,就相当于剩下的8个数参与排序,7次两两交换。
14
15     if(arr[i]>arr[i+1]){//相邻连个数进行比较,如果第一个数大于第二个数则互换位置。
16     t = arr[i + 1];
17    arr[i+1] = arr[i];
18    arr[i] = t;
19    flag = true;
20     }
21            }
22    if(flag){
23      x++;
24    flag = false;//如果为true则表示交换了位置,如果为false则表示顺序是对的,不需要排序了,可以减少循环的次数
25         }
26   else{
27    break;
28   }
29    }
30 alert(x);//五次
31 document.write(arr  + "<br/>");
时间: 2024-10-09 02:03:42

js实现冒泡排序的相关文章

js数组冒泡排序,快速排序的原理以及实现

实习了好久,大概用了半年ng2了吧,突然被同事问到js排序问题,一时竟有些懵逼,回来就温故一下,希望自己不忘初心,加油加油! 冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. function sortA(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ //获取第一个值和

JS实现冒泡排序,插入排序和快速排序(从input中获取内容)

以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理,我在这里也不过多叙述了.必要的地方,我在代码里面注释了一下的. 以下是代码: index.html 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Sorting</title> 5 <link re

js 排序 冒泡排序,选择排序,插入排序

冒泡排序: 对数组的中的数据,依次比较相邻两数的大小. 如果前面的数据大于后面的数据,就交换这两个数. 时间复杂度O(n^2) 1 function bubble(array){ 2 var temp; 3 for(var i=0; i<arr.length; i++){ 4 for(var j=0; j<arr.length; j++){ 5 if(arr[j]>arr[j+1]){ 6 temp = arr[j+1]; 7 arr[j+1] =arr[j]; 8 arr[j]=tem

js模拟冒泡排序动态图(1轮)

代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>123</title> 6 </head> 7 <style> 8 .div1{ 9 width:80px; 10 height:45px; 11 border:2px solid red; 12 display:none; 13 float:l

js之冒泡排序与快速排序

1 //冒泡排序 2 let arr = [1, 6, 3, 7, 5, 9, 2, 8]; 3 function sort(arr) { 4 //升序 5 console.time("冒泡排序耗时") 6 let num1 = null; 7 for (let i = 0; i < arr.length - 1; i++) { 8 //外层循坏的作用是每次循坏找出一个最大数放在这个数组的最后面 9 for (let j = 0; j < arr.length - i -

js 冒泡排序与快速排序

刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来. 1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换.否则的话当前元素再与下下个元素比较,一直到 跟后面的元素都比较完.这个是升序的排序,降序则相反. 1 var arr = [1,23,4,12,32,455,122,3,43,13]; 2 3 function bubbleSort(arr) { 4 for (let i = 0; i < arr.length - 1; i++) { 5 f

JS算法总结

1.选择排序: var arr = [3,6,7,2,6,4,1,6,8,24,12,53]; function sort(arr){ // 当数组的长度小于1的时候结束递归 if(arr.length==1){ return arr; } var min = arr[0],index = 0; for(var i=0;i<arr.length;i++){ // 计算最小值,如果数组当前值比之前的值还小那么min等于最小值. if(arr[i]<min){ min = arr[i]; // 保

js中的数组排序

js数组冒泡排序,快速排序的原理以及实现 冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = [3,1,4,2,5,21,6,15,63]; function sortA(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ //获取第一个值和后一个值比较 v

Mr.Xu的找实习之路

长长的路慢慢走 深深的话浅浅说 --广工Mr.Xu的找前端实习之路 这 不(display:none) 是 广 告 本人广工大三学生一枚,也是学校TopView团队的成员之中的一个.之前我们团队有位屌丝写了一篇<大三广工屌丝男性实习逆袭>,大家有兴趣的能够去看看.为了保持队形,为了宣传下我们的团队,我不得不明目张胆地插播一则广告.这个不是炫耀,是赤裸裸的卖广告.今年topview团队暑假找实习的战绩是3个腾讯,2个阿里,2个金山(未完待续,说不定还有UC等其它公司).眼下TopView团队即将