三大经典排序算法之最经典之冒泡排序

排序算法:冒泡排序

冒泡排序的思想:让数组中的当前项和后一项进行比较,如果当前项比后一项大,则两项交换位置(让大的靠后)即可

let ary = [12,8,24,16,1];

第一轮开始比较:

12>8  交换位置 [8,12,24,16,1]

12<24  不交换位置  [8,12,24,16,1]

24>16  交换位置   [8,12,16,24,1]

24>1  交换位置  [8,12,16,1,24]

第一轮完成后,虽然没有实现出最后的效果,但是当前数组中最大的这个值24放到了末尾

第二轮开始比较

8<12  不交换位置  [8,12,16,1,24]

12<16  不交换位置  [8,12,16,1,24]

16>1 交换位置 [8,12,1,16,24]

不用再和24比较了,而且本轮结束剩余值中最大的16也放到末尾了

第三轮比较

8< 12  不交换位置 [8,12,1,16,24]

12>1  交换位置 [8,1,12,16,24]

不用再和16比较了,而且本轮技术剩余值最大的12也放到末尾了

第四轮比较

8>1  交换位置 [1,8,12,16,24]

冒泡结束

需要比较length-1轮(5个数,只需要把4个最大的依次放到末尾即可)

第一轮比较4次,最多比较length-1次(不用和自己比较)

第二轮比较3次,每一轮比较我们都把当前最大的放到了末尾,所以当前轮比较多少次,需要把之前放到末尾的值也得去掉

...

/*冒泡排序*/

// ary传入的数组

// return的是返回的新数组

function bubble(ary){

let temp = null;

//外层循环i控制比较的轮数

for(let i = 0 ; i< ary.length-1; i++){

//里层循环控制每一轮比较的次数

for(let j=0;j< ary.length-1-i; j++){

if(ary[j]>ary[j+1]){

//当前项大于后一项

temp = ary[j];

ary[j] = ary[j+1];

ary[j+1] = temp;

}

}

}

return ary;

}

let ary = [12,8,24,16,1];

ary = bubble(ary);

console.log(ary);

原文地址:https://www.cnblogs.com/itsmart/p/12600325.html

时间: 2024-08-03 09:31:35

三大经典排序算法之最经典之冒泡排序的相关文章

三大经典排序算法之最经典之快速排序

先做个热身 //递归:函数执行的时候自己调用自己 // function fn(){ // fn(); //Uncaught RangeError: Maximum call stack size exceeded // 这种死递归会导致栈溢出 // } // fn(); // function fn(){ // setTimeout(fn,0);//这种看起来像死递归的方法不会导致栈溢出错误 // } // fn(); //快速递归 function quick(ary){ //4.结束递归(

经典排序算法

经典排序算法(via  kkun) 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 -  插入排序Insertion sort 经典排序算法 - 基数排序Radix so

【转】经典排序算法

地址:http://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 -  插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonho

经典排序算法【转】

转自 还有多少青春可以挥霍 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 -  插入排序Insertion sort 经典排序算法 - 基数排序Radix sort 经典排序算法 - 鸽巢排序Pigeonhole sort 经典排序算法 - 归并排序Merge sort 经典排序算法 - 冒泡排序Bubble sort 经典排序算法 - 选择排序Selection sort 经典排序算法 - 鸡尾酒排序Cocktail sort 经

[经典排序算法][集锦]

http://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html 经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者更容易理解,通俗易懂,部分难以理解的排序算法则给出了大量的图示,也算是一个特色吧 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经

十大经典排序算法(python实现)(原创)

经典排序算法图解: 经典排序算法的复杂度: 大类一(比较排序法): 1.冒泡排序(Bubble Sort) python代码实现: 1 d0 = [2, 15, 5, 9, 7, 6, 4, 12, 5, 4, 2, 64, 5, 6, 4, 2, 3, 54, 45, 4, 44] 2 d0_out = [2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 9, 12, 15, 44, 45, 54, 64] # 正确排序 3 4 while 1: 5 stat

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

C#实现所有经典排序算法

C# 实现所有经典排序算法 1 .选择排序 选择排序 原理: 选择排序是从冒泡排序演化而来的,每一轮比较得出最小的那个值,然后依次和每轮比较的第一个值进行交换. 目的:按从小到大排序. 方法:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 第一轮依次比较相邻两个元素,将最小的一个元素的索引和值记录下来,然后和第一个元素进行交换. 如上面的数组中,首先比较的是72,54,记录比较小的索引是54的索引1.接着比较54和59,比较小的索引还是1.直到最后得到最

经典排序算法的PHP实现类

近期广受笔试摧残,对于各种排序也是晕头转向. 更坑爹的是貌似大多都是用C++.Java实现相关算法,让我搞PHP的情何以堪,更何况,PHP本身就有排序函数sort(),其实来说,是很简单的,这也可能是为什么不用PHP进行排序吧. 但考虑到PHP毕竟也是一门面向对象的语言吧,我们利用原生的语法,也是可以实现经典排序算法的,先不说性能如何,切不要妄自菲薄吧. 下面为具体的经典排序算法的PHP实现类. <?php /** * Author: helen * CreateTime: 2016/4/15