11-冒泡排序

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

    var arr = [7,6,5,4,3,2,1];
    //需求:冒泡排序。
    //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
    //核心:双重for循环。
    //步骤:
    //1.双重for循环。
    //2.指定轮数和次数
    //3.判断是否符合标准。如果符合标准交换位置。
    console.log(arr);

    //1.双重for循环。(外循环控制轮数)
    for(var i=0;i<arr.length-1;i++){
        //2.指定轮数和次数(内循环控制次数)
        for(var j=0;j<arr.length-1;j++){
            //3.判断是否符合标准。如果符合标准交换位置。
                //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
            if(arr[j] > arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }

    console.log(arr);

</script>
</body>
</html>

  

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

    var arr = [7,6,5,4,3,2,1];
    //需求:冒泡排序。
    //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
    //核心:双重for循环。
    //步骤:
    //1.双重for循环。
    //2.指定轮数和次数
    //3.判断是否符合标准。如果符合标准交换位置。
    console.log(arr);

    //每轮比较少比较一次。(每一轮都会比较出一个最大值,然后后一轮没有必要再比较了,所以没比较一轮,就少比较一次。。。)
    var m = 0;
    var n = 0;

    //1.双重for循环。(外循环控制轮数)
    for(var i=0;i<arr.length-1;i++){
        //2.指定轮数和次数(内循环控制次数)
        for(var j=0;j<arr.length-1-i;j++){
            //3.判断是否符合标准。如果符合标准交换位置。
                //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
            if(arr[j] > arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
            m++;
        }
        n++;
    }

    console.log(arr);
    console.log(m);
    console.log(n);

</script>
</body>
</html>

  

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

//    var arr = [7,6,5,4,3,2,1];
    var arr = [1, 2, 3, 4, 5, 6, 7];
    //需求:冒泡排序。
    //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
    //核心:双重for循环。
    //步骤:
    //1.双重for循环。
    //2.指定轮数和次数
    //3.判断是否符合标准。如果符合标准交换位置。
    console.log(arr);

    //如果比较完备提前结束比较。(判断,如果本次比较没有移动任何元素,那么说明已经比较完成)
    var m = 0;
    var n = 0;

    //1.双重for循环。(外循环控制轮数)
    for(var i=0;i<arr.length-1;i++){
        //开闭原则。(写在第一个for循环里,是为了,每轮比较初始化bool变量变为true。)
        var bool = true;
        //2.指定轮数和次数(内循环控制次数)
        for(var j=0;j<arr.length-1-i;j++){
            //3.判断是否符合标准。如果符合标准交换位置。
                //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
            if(arr[j] > arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                bool = false;
            }
            m++;
        }
        n++;
        //bool这个变量默认值为true;如果本轮比较有一对元素相互交换位置,那么也不能跳出循环。
        //但是,如果本轮比较没有任何元素相互交换位置,那么说明已经比较完成,可以跳出循环。
        if(bool){
            break;
        }
    }

    console.log(arr);
    console.log(m);
    console.log(n);

</script>
</body>
</html>

  

时间: 2024-09-29 23:39:56

11-冒泡排序的相关文章

冒泡排序应用

冒泡排序的主要思想是换位,例如在满足某种条件下将i和j调换: if i>j: p = i i = j j = p 举出例子如下: 随意输入两个数字,将两个数字排序变成最小后相加 例如第一个数是51423,第二个是88613 最后变成12345+13688=... 在python3的代码下: 1 a = input('请输入第一个数:') 2 b = input('请输入第二个数:') 3 arr_a = [] 4 arr_b = [] 5 for i in a: 6 if i in a: 7 a

杂谈(冒泡排序)

1.string只能看作是一个char数组(char[]),而且是只读的,通过索引器实现,只给了只读Get索引器.2.在winform中打开一个链接:System.Diagnostics.Process.Start("网址");3.winform中通过代码为PictureBox载入一张图片:Image.FromFile("图片路径");4.禁用某个按钮的Tab键顺序:只需要将该控件的TabStop属性设置成False即可.this.Size.Width:winfor

冒泡排序与水仙花算法及九九乘法表

九九乘法表:  请用算法程序打出九九乘法表.(如图) .   其相应算法是 1 public class 九九乘法表 { 2 public static void main(String[] args) { 3 for(int i=1;i<=9;i++){ 4 for(int j=1;j<=i;j++){ 5 int a=i*j; 6 System.out.print(i+"*"+j+"="+a+" "); 7 } 8 System.

java 选择排序与冒泡排序

选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;...., 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换;总共通过n-1次,得到一个按排序码

数组冒泡排序方法

public void arrayBubblingSort() {    //定义一个int类型数组,并赋值元素值    int[] num = {6,12,8,3,14,9,7,2,11};    //冒泡排序    for(int i = 0;i < num.length-1;i++) {        //每次比较,把最大值依次放到最左边,完成升序,下一次比较将比上一次-1次        for(int j = 0;j < num.length-1-i;j++) {          

各种排序算法的分析及java实现

各种排序算法的分析及java实现 排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下. 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插入排序:直接插入排序.二分法插入排序.希尔排序. (2).

java小程序整理及排序算法

1. 利用循环打印如下图形 ***** **** *** ** * public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int i = 5; while (i >= 0) { for (int j = i; j > 0; j--) System.out.print("*"); System.out.println(); i--; } }

【转】八大排序算法分析及JAVA实现

 原文地址http://blog.csdn.net/without0815/article/details/7697916 http://www.cnblogs.com/liuling/p/2013-7-24-01.html 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插入排序:直接插入排序.二分法插入排序.希尔排序. (2).选择排序:简单选

两个排序算法

好几天没写博客了,最近要考试了,有c语言.本来准备就为了应付考试,随便学一下的,然后准备下学期用c来学习数据结构和算法,可是,看了一些视频,就准备入坑c/c++了....自己学了将近一个学期的c#,就这样放弃感觉还是有些小舍不得呢...不过,技术都是有共同性的,也不算是浪费时间了 然后贴代码: 1 int num[10]; 2 time_t tms; 3 srand((unsigned int)time(&tms));//生成种子 4 for (int i = 0; i < 10; i++)

迎战下周自考数据结构实践科目

编写完成重点数据结构和算法: 0.链表 1.栈 2.队列 3.二叉树数据结构和构建 4.前序中序后序遍历二叉树 5.构建哈夫曼树(最优二叉树) 6.图数据结构,图的深度优先遍历和广度优先遍历 7.拓扑排序 8.直接插入排序 9.希尔排序 10.希尔排序 11.冒泡排序 12.快速排序 13.直接选择排序 14.堆排序 15.归并排序 16.箱排序和基数排序 17.顺序查找,二分查找,索引顺序查找 // ExamTest.cpp : 定义控制台应用程序的入口点. // #include "stda