对于冒泡法的一些看法

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序算法的运作如下:

?1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

<html>
<head>
        <title>
        </title>
        <style>
        </style>
</head>
<body>
<input type="button" name="one" value="点我" />
<div style="width:100px;height:100px;background:red;">
        
        <img src="1.jpg" width="50px" height="50px"/><input type="submit" name="two" value="取消冒泡"/>
</div>

<input type="text" name="flag" value="还没有" />
<input type="text" name="text" />
<a href="extends.html">dasf</a>
<script>
        window.onload = function(){
                //alert("windowonloaded!");
                var img = document.getElementsByTagName("img")[0];
                var input = document.getElementsByTagName("input")[2];
                var div = document.getElementsByTagName("div")[0];
                //alert(div);
                var hand = function(event){
                
                        switch(event.type){
                                case "mouseover":input.value = "onmouseover";break;
                                case "mouseout":input.value = "onmouseout";break;
                                case "mouseenter":input.value = "onmouseenter";break;
                                case "mouseleave":input.value = "onmouseleave";break;
                                case "dbclick" :input.value = "dbclick";break;
                                case "mousedown":input.value = "mousedown"+event.button+event.detail;break;
                                case "mouseup":input.value="mouseup";break;
                                case "click":input.value="click";break;
                                //case "mouse"
                        }
                }
                div.onmouseover = hand;
                div.onmouseout = hand;
                div.onmouseenter = hand;//当重父节点移动到子节点时,重触发事件到不促发事件;
                div.onmouseleave = hand;
                div.onmousedown = hand;
                div.onmouseup = hand;
                
                div.onclick = hand;
                 
        }
        var showcount = 0;
        window.onpageshow=function(){
                alert(showcount++);
        }
        var btn1 = document.getElementsByTagName("input")["one"];
        var handler = function(){
                alert(window.event.srcElement == event.target);//为true,现在ie浏览器已经兼容event了
        };
        //btn1.onclick = handler;
        btn1.addEventListener("click",handler,false);
        //btn1.attachEvent("onclick",handler);//IE9一下支持
        btn1.addEventListener("click",function(){
                alert("lixian");
        },false);
        btn1.removeEventListener("click",handler,false);
        
        
        
        //
        var bubble = document.getElementsByTagName("input")["two"];
        bubble.onclick = function(){
                alert("不返回div的onclick事件!");
                event.stopPropagation();//非常重要
                
        };
        bubble.parentNode.onclick = function(){
                //alert("我被取消了!");
        };
        
        //鼠标滚动事件
        var div = document.getElementsByTagName("div")[0];
        div.onmousewheel = function(){
                alert(event.wheelDelta);
        }
        div.addEventListener("DOMMouseScroll",function(){//火狐使用
                alert(event.detail);
        },true);
        document.body.addEventListener("DOMMouseScroll", function(event) {
    console.dir(event);        
});
        window.onkeydown = function(event){
                //alert(event.keyCode+","+event.charCode+","+event.key+","+event.char+","+event.location+","+event.getModifierState("Shift"));
                
        }
        alert(document.getElementsByTagName("input")[1]);
        document.addEventListener("DOMContentLoaded",function(event){
                alert("have loaded!");
                document.onreadystatechange=function(event){
                if(event.readyState=="interactive"||event.readyState=="complete")alert("aaa");
                else alert(event.readyState);
                //alert(event.data);
        };
                //alert(event.data);
        },false);
        
        document.oncontextmenu = function(event){
                event.preventDefault();
                //alert("aaa");
        }

if(document.implementation.hasFeature("CustomEvent","3.0"))alert("success!");
</script>
</body>
</html>

时间: 2024-10-26 17:00:48

对于冒泡法的一些看法的相关文章

数组的排序,冒泡法,快速排序法

1.冒泡法排序 /* * 冒泡法排序 :在要排序的一组数中,对当前还未排好序的范围内的全部数,自左而右对相邻的两个数 * 相邻的两个数的交换 */ public void bubbleSort(int[] num) { int temp = 0; for(int i=0;i<num.length-1;i++){ for(int j=0;j<num.length-1-i;j++){ if(num[j]>num[j+1]){ temp=num[j]; num[j]=num[j+1]; num

8. 冒泡法排序和快速排序(基于openCV)

一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分为内外循环,每次外循环确定一个大的数据的具体位置,如下实例: 从图中可以看出,进过两次外循环就可以得到排序结果,随后的8次循环都浪费了,为了避免这种情况,我们可以设置一个状态参数,用来表示内循环是否发生数据的交换,从而作为外循环是否退出的信号. 三.快速排序 快速排序是最有效的排序方法之一,其主要思

一个循环实现冒泡法排序(并没有什么卵用)

冒泡法时间复杂度为O(n^2) 这个是改不了的 不可能因为用一个循环实现,就变成了O(N)... 所以,并没有什么卵用,只是一种写代码的方式而已... //Swap 用宏实现 #define Swap(a,b,c) ((c)=(a),(a)=(b),(b)=(c)) //第一种方式,,,最简单的 void BubbleSortOneLoop(int ar[], int n) { int i = 0; int l = 0; while (i < n - 1)//i还是控制最外层 { if (ar[

数组排序(java)冒泡法

public class ArrayTest03{ /* Name:数组排序,冒泡法 Power by :Stuart Date:2015-4-23*/ public static void main(String args[]){ //定义一个integer数组 int array[]={0,1,4,8,5,4,10,9}; for(int i=0;i<array.length;i++){ //第二层循环从第一层循环的元素第一次后一个开始 for(int j=i+1;j<array.leng

数组-03. 冒泡法排序

数组-03. 冒泡法排序(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一个元素必定是最大的元素.然后用同样的方法对前N-1个元素进行第二遍扫描.依此类推,最后只需处理两个元素,就完成了对N个数的排序. 本题要求对任意给定的K(<N),输出扫描完第K遍后的中间

数组-03. 冒泡法排序(20)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int i,j,n,k,a[100],tmp; 5 cin>>n>>k; 6 for(i=0;i<n;++i) 7 cin>>a[i]; 8 for(j=0;j<k;++j) 9 for(i=0;i<n-j-1;++i) //注意-1 10 if(a[i]>a[i+1]){ 11 tmp=a[i]; 12 a[i]=

排序算法之冒泡法

package chap02_Basic_Algorithms; import static org.junit.Assert.*; import java.util.Arrays; import org.junit.Test; public class SortAlgorithms { /** * 冒泡法排序 * * @param n */ static void bubbleSort(int[] n) { int j = n.length - 1; int i; int tmp; while

重温冒泡法。

晚上又玩了会冒泡法, void bubbleSort(int* a, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n-i; j++) { if (a[j+1] > a[j]) { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } print(a, n, i); }} void bubbleSort(int* a, int n) { for (int i = 0;

C#版 选择法、冒泡法、插入法和快速排序法分析与对比(一)

前言 之前老师就讲过了选择法和冒泡法,之后又提到了插入法和排序法,今天做了一个小DEMO,对比了一下四种方法的效率,当然看了很多大牛也博客,其实算法还设计了时间复杂度和空间复杂度,对于这两个概念,我只能从表面上进行理解,其中涉及到了很多数学的问题,所以就不展开写了. 选择排序 冒泡法 插入法 快速排序法 这部分知识比较新,而且内容比较多,所以打算单独另外总结一遍博客,来详细的总结一下这个方法~ DEMO(比较三个算法所用时间) 先说一下设计的思路,生成要求个数的不重复的随机数,将随机数循环赋给l