1. 编程学习网 > 编程教程 > java教程 > 第二十五篇 冒泡排序

第二十五篇 冒泡排序

第十六章-冒泡排序
算法,简单来说就是计算的方法,解决问题的步骤。在编程中我们常会应用到各种算法。如:排序、搜索等。(算法与数据结构可以说是程序的灵魂,应用合适的算法可以大大提高程序的执行效率)我们在本章中将要学到的冒泡排序算法即是一种基础排序算法(排序算法,即对一组无序数据进行排列,使其成为有序数据的计算方法)。
冒泡排序因其实现原理与水中气泡上升的情景相似得来,我们来看个例子,有一组无序数据“5、4、1、2、2、3、3、6、2、3“使用冒泡排序将这组无序数据排列成由小到大(升序)的有序数据,它的排序原理便是比较,两两比较根据大小来进行元素交换。如:5比4大,那么便两两交换,使4前移一位,5后移一位,然后4再与后一位进行比较,依此循环。(升序排序越小的数应越在前面,降序反之)。具体实现代码如下。
public class BubbleSort{
    public static void main(String[] args){
        int one[]= {5,4,1,2,2,3,3,6,2,3};
       int i,j,temp;
        
        for(i=0;i<(one.length)/2;i++) {   
            for(j=0;j<(one.length)-1;j++) //利用循环实现数据两两比较
            {
                if(one[j]>one[j+1]) {   //进行数据交换
                    temp=one[j];
                    one[j]=one[j+1];
                    one[j+1]=temp;
                }
            }
        }
        
        for(int t:one) {                //输出已排序好的数据
            System.out.println(t);
        }
    }
}

冒泡算法的核心是双重循环,数组中的元素比较,交换时都是利用这个双重嵌套循环完成的。外循环控制比较趟数,内循环控制每一趟的比较次数,(将一个元素归位即为一趟)。
关于算法,我们还需要了解到时间复杂度/和空间复杂度的概念,时间复杂度我们可以将之简单的理解为算法执行所用的时间,算法时间复杂度是根据估算得出的,一般使用大“O”记法(O(频度)),其频度是根据算法所使用循环中代码循环次数得出的(因循环对算法运行时间影响大)。次数越多,复杂度越高。反之,次数越少,复杂度越低。一条语句执行了1次,那么它的时间复杂度就是O(1),它循环执行了n次时间复杂度即为O(n),以本章中讲述的冒泡排序算法为例,它共循环执行了n*n次时间复杂度也就是O(n2)。算法常用的时间复杂度比较是“O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n2)平方阶 < O(n3)(立方阶) < O(2n) (指数阶)”(此排序为由小至大)。
冒泡排序只是基础排序算法中很简单的一个,关于算法的部分我们目前就浅尝到这里,诸如快速排序、桶排序这些就稍难了,更不用说后面需要学习的树、表、图这些数据结构了,但是有兴趣的同学可以自行去学习下数据结构与算法这门课程。

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/java/467.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休