排序1-冒泡排序

来源:互联网 发布:四知先生 编辑:程序博客网 时间:2024/06/12 00:02

排序的分类:
内部排序与外部排序。按照排序过程中所涉及的存储器的不同可分为内部排序和外部排序。内部排序是指待排序序列完全存放在内存中进行的排序过程,这种排序方法适合于数据量不太大的数据元素的排序。外部排序是指待排序的数据元素非常多,以至于它们必须存储在外部存储器上,这种排序需要访问外存储器,这样的排序称为外排序。
这里写图片描述

冒泡排序:
实例:如果要对一队棒球队员进行身高的排序,应该怎样做呢?

冒泡排序所采用的思路是:
1.从最左边的(1,2)两个队员开始比较。
2.如果左边的队员高,则两队员交换位置
3.沿着这个规则再依次比较(2,3) 和 (3,4)…………..一直比较到最右端。这样就把身高最高的队员排在最右边了。(完成第一躺排序,会进行最少0次,最多n-1次比较)
4.重新回到队列左端进行第二趟排序,重复上述过程。

程序代码:

public class BobbleSortTest{       public static void main(String[] args)    {        //待排序数组元素        int array[] ={159,178,168,150,187,164,167,188,177,173};        //排序算法        //外层循环控制比较次数 ,最多比较的是n-1次(也就是最差情况).第二次比较时,最后一个元素就不用再比较了,依次类推              for(int i=0;i<array.length - 1;i++)              {                //真正的用于控制两个元素两两比较,array.length-i-1的意思就是已经放在最后的元素不需要再比较了。                for(int j=0;j<array.length-i-1;j++)                {                     if(array[j]>array[j+1])   //如果前面元素大于后面元素,执行交换                    {                        int temp = array[j];                        array[j] = array[j+1];                        array[j+1]=temp;                    }                }            }            for(int i=0;i<array.length;i++)            {                System.out.println(array[i]);            }    }}

冒泡排序的效率:
一般来讲,数组中有N个数据项,则第一躺排序又N-1次比较,第二趟有N-2次比较,以此类推。。。
(N-1)+(N-2)+(N-3)+……+1 = N*(N-1) / 2;

所以冒泡排序的时间复杂度为 O(N^2)

0 0