JAVA编程实例--冒泡算法

来源:互联网 发布:光机电一体化 编程 编辑:程序博客网 时间:2024/06/18 15:26

一、实例说明

本实例是利用Java实现一个非常简单的排序算法------冒泡算法。在任何规模的软件程序设计当中都会经常用到排序算法,比如在桌面工具软件中,在管理信息系统中,以及在工业统计和科学计算中都会大量用到排序算法。通过本节介绍的编程实例,读者可以加深对本章所讲的Java语言基础的认识,巩固所学的知识。

二、基础知识点

1.冒泡排序基本思想

冒泡排序的思想很简单。假设有n个数字的数列,要实现从小到大排序。首先将第一个数字和第二个数字进行比较,如果第一个数比第二个数大,则将两个数交换,然后比较第二个数和第三个数,依次类推,直至第n-1个数和第n个数进行比较为止。上述过程称作第一趟冒泡排序,这样第一趟结束时第n个数就是所有数列中最大的数,就好像水中冒出的气泡一样,最大的数也会向前“漂浮”。然后进行第二趟排序,对前n-1个数进行同样的操作,其结果使得第二大的数安置到了第n-1个数的位置上。冒泡排序示例如下:

初始的时候:  49 38 65 97 76 13 27 49

第一趟排序后:38 49 65 76 13 27 49 97

第二趟排序后:38 49 65 13 27 49 76 97

第三趟排序后:38 49 13 27 49 65 76 97

第四趟排序后:38 13 27 49 49 65 76 97

第五趟排序后:13 27 38 49 49 65 76 97

第六趟排序后:13 27 38 49 49 65 76 97

第七趟排序后:13 27 38 49 49 65 76 97

从以上可以看出每一趟冒泡排序都可以选出一个最大的数放在最后面,这样如果有n个数要排序,顶多进行n-1趟排序就够了。细心的读者会发现其实第六趟排序没有交换任何数字,整个数列已经是按照从小到大的顺序排列了,就是说第七趟排序是多余的。那么怎样在程序中判断何时排序可以结束呢?有兴趣的读者可以利用本章学到的知识进一步改进冒泡算法。

2for循环结构

在排序算法中需要用到for循环结构,在这里有必要再巩固一下:

forinitexpr1;testexpr2;incrementexpr3

{

          statements;

}

3if判断语句

if/else分支结构:

ifboolean

{

   statements;

}

else

{

   statements;

}

三、技术要点

1Java数组

数组元素就相当于一个变量。在本节的实例中需要利用数组记录排序以前的数列和排序以后的数列。一个具有8个元素的整型数组定义格式: 

 int a[]=new int[8];

2.数值交换

数值交换在程序设计中是很常用的,希望初学者能够掌握。如果要求ab实现交换,那么必须引出一个临时变量c起到中介的作用,寄存a的值。交换部分的代码如下:

c=a

a=b;

b=c;

3.循环

利用for循环语句进行每趟大小的比较。

for int i = 0; i<=7; i++

{

 

}

四、实现步骤

首先新建一个类,命名为Sort.java,在Sort.java文件中键入下列代码:

public class Sort {

  public Sort() {

  }

 

  public static void mainString[] args {

    Sort sort1 = new Sort();

    int a[] = new int[8];

    a[0] = 49;

    a[1] = 38;

    a[2] = 65;

    a[3] = 97;

    a[4] = 76;

    a[5] = 13;

    a[6] = 27;

    a[7] = 49;

    int tmp; //定义临时变量,作为寄存器

    for int i = 0; i <= 7; i++ {

      for int j = 0; j < 7 - i; j++ { //以下进行每趟排序

        if a[j] > a[j + 1] { //比较大小,交换

          tmp = a[j + 1];

          a[j + 1] = a[j];

          a[j] = tmp;

        }

      }

    }

    //将比较完成的结果打印出来

    for int i = 0; i <= 7; i++ {

      System.out.printa[i] + ";";

    }

  }

}

五、归纳总结

上述实例,主要体现了Java最基础的知识,排序算法本身并不是重点。但无论是变量赋值的基本用法,还是forif等控制语句的灵活运用,Java程序的基本结构,都是编程必备的最基础的知识。必须要认真体会和熟练掌握。

 

原创粉丝点击