算法,总归是一种规律性的总结。
今天总结下冒泡排序的问题,过往总是对其一知半解,今天在尚硅谷的视频中想到,这不就是一种总结规律的方式嘛,所以把自己的浅见输出以便加深印象,同时作为自己的记录。
var arr = [3,1,5,2,10,6];
// 排列数组 升序
// 按照冒泡排序的想法 画出图形 来总结规律 或者如果我们开始不知道冒泡排序这种说法,那按照自己的排序想法画出来 从而更好的找出规律 封装函数
/***
* 用第一个数和第二个数比较,如果第一个数大于第二个则交换位置,然后依次用第二个跟第三个比较...
* 3,1,5,2,10,6
* 第一轮 1,3,2,5,6,10 比较 5次即 arr.length - 1 - 0 次
* 第二轮 1,2,3,5,6,10 比较 4次 即 arr.length - 1 - 1 次
* 第三轮 1,2,3,5,6,10 比较 3次 即 arr.length - 1 - 2 次
* 第四轮 1,2,3,5,6,10 比较 2次 即 arr.length - 1 - 3 次
* 第五轮 1,2,3,5,6,10 比较1次 即 arr.length - 1 - 4 次
***/
// 尝试着写函数
for(var i = 0; i < arr.length - 1; i += 1) {
// 比较5轮
for(var j = 1; j < arr.length - 1 - i; j += 1) {
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
从视频中得来的其实不是冒泡算法这个解题思路,其实是对算法的恐惧和一直以来算法被渲染的很难很高深的一种思维误区,原来他就是一种固定的模式,一种被总结出来可以套用的方法。
所以,在以后的代码过程中,自己解决具体问题时候找出具体问题所归纳出的有规律的解体思路就是一种通用的算法了。
网友评论