用js实现冒泡排序和求水仙花数

#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/>');
                            }
                        }
                    }
                }

posted @ 2015-10-14 23:40  三个圈  阅读(1562)  评论(0编辑  收藏  举报