#js中冒泡排序和求水仙花数
<hr> ##冒泡排序## 用冒泡排序Bubble Sort来排数字大小,和换墨水瓶是一个道理 >有三个墨水瓶,a瓶装红墨水,b瓶装蓝瓶墨水,c空墨水瓶; >要将a瓶里装蓝墨水,b瓶里装红墨水,就得先将a瓶中的红墨水倒入c瓶,再将b瓶中的蓝墨水倒入a瓶中,最后讲红墨水倒入b瓶中就大功告成啦! 所以呢,冒泡排序一种简单的排序算法,就是它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 ### 算法原理 ### 冒泡排序算法的运作如下:(从后往前) 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 代码如下:(从小到大排) function bubble(arr) { var len = arr.length; var temp = 0; for(var i = 0;i < len; i++) { //循环次数为数组长度 for(var j = 0;j < len-1; j++ ){ if (arr[j] > arr[j + 1]) { //比较一个数的值与后一个数的大小 temp = arr[j]; //换墨水原理 将小的数放在前面 arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } var num = [10, 6, 5, 3, 2, 47, 0, 34]; bubble(num); document.write(num + "<br/>"); ##水仙花数## 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153);水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。 水仙花数又称阿姆斯特朗数。 代码如下:(1000以内的水仙花数) var a, b, c,i;for(a=1;a<10;a++){ //提取百位
for(b=0;b<10;b++){ //提取十位 for(c=0;c<10;c++) { //提取个位 var i = a*100+b*10+c; if (i== a*a*a +b*b*b + c*c*c){ document.write(i+'<br/>'); } } } }