赞
踩
算法,在计算机中的地位,就相当于人类大脑的决策中枢系统,哪怕最简单的算法,其精妙的思维方式,都可以让人开启一扇新的视窗。
算法,它不仅仅只是狭义的用来解决计算机科学领域的问题,更是一种“思维方式”。算法思维,是一种深度思考和创造的过程。
算法,只有真正理解了,而不只是所谓的知道,并将应用到生活、工作、学习等各个方面,它将一定使人受益终生。
冒泡排序,就是相邻的两个元素比较,把小的元素往前调或者把大的元素往后调,实现元素的顺序排列。
第一个数字和第二个数字开始两两比较,数字 【7】 和 【9】 位置互换,完成第一轮的第一次排序。
第二个数字和第三个数字开始两两比较,数字 【1】 和 【9】 位置互换,完成第一轮的第二次排序。
第三个数字和第四个数字开始两两比较,数字 【5】 和 【9】 位置互换,完成第一轮的第三次排序。
第四个数字和第五个数字开始两两比较,数字 【8】 和 【9】 位置互换,完成第一轮的第四次排序。
第五个数字和第六个数字开始两两比较,数字 【6】 和 【9】 位置互换,完成第一轮的第五次排序。
至此,第一轮排序已经完成结果为:{7,1,5,8,6,9} ,找到了最大的数字为【9】,通过两两比较将它排在数组的最后位置,接下来还有四轮排序,思路以此类推循环比较。
public static void bubbleSort(int[] array){
//外层循环控制比较的次数,比较次数为总长度减 1
for(int i=array.length-1;i>0;i--){
//内层循环依次取出前后比较的数据,j<i 减去了已经排好序的数据
for(int j=0;j<i;j++){
// 相邻的两个数比较,小数值排在前面,前后交换位置,升序排列
if(array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
穷举法,在计算机中是一种非常普通,且时间复杂度很高解决问题的途径,但它在对时间效率要求高的场景中应用,就不合适了,它的优点就是简单,便于理解,不容易遗漏。
冒泡排序的穷举思路,类似于麦肯锡公司的巴巴拉·明托在金字塔原理提出分析问题的“MECE分析法”,即“相互独立,完全穷尽”。
也就是对于一个问题,能够做到不重叠、不遗漏的分类,而且能够借此有效把握问题的核心,并成为有效解决问题的方法。
生活和工作中,当我们遇到重大难以抉择的问题的时候,MECE分析法将所有可能的情况都分别列举,相互比较,择优选择,这或许是我们拆解疑难问题,寻找解决方案比较有效的一种方式。
思维的持续,一个真的有思想,不穿格子衬衫的程序员。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。