冒泡排序示例

原创 2017年05月22日 23:28:05

一、概念与算法思想
冒泡排序形象的比喻为锅中的开水沸腾,锅中的气泡由锅底向上冒出,气泡由小变大。冒泡排序法又称为交换排序法,由第一个元素开始,比较相邻元素的大小。
二、优缺点
最坏情况,比较n(n-1)/2,时间复杂度为O(n^2),最好情况是一次就完成排序,时间复杂度为O(n)。
* 只需要一个额外的空间,所以空间复杂度为最佳
* 此排序法适用于数据量小或者有部分数据已经排序的情况下。
Import java.demo.bubblesort;
/*
*冒泡排序算法
*/这里写代码片

public class CHO8_01 {
    public static void main(String args[]){
        int data[]=new int[]{8,5,3,4,1,7};      
        int temp=0;
        System.out.println("冒泡排序法:");
        System.out.println("请输入原始数据:");
        for(int i=0;i<6;i++){
            System.out.println(data[i]+"");
        }
        for(int i=5;i>0;i--){ //扫描次数
            for(int j=0;j<i;j++){  //交换次数
//              比较相邻两数的大小,如第一个数较大则交换
                if(data[j]>data[j+1]){
                    temp=data[j];
                    data[j]=data[j+1];
                    data[j+1]=temp;

                }
            }
            System.out.println("第"+(6-i)+"的排序结果");
            for(int j=0;j<6;j++){
                System.out.println(data[j]+"");
            }
            System.out.println("\n");


        }
        System.out.println("排序后的结果为:");
        for(int i=0;i<6;i++){
            System.out.println(data[i]+"");
        }
        System.out.println("\n");
    }

}

*/
/由以上的程序执行可知,不管程序是否执行完数据的排序,都要进行 n(n-1)/2次,我们可以增加适当的判断条件经行
* 程序的优化。
* 下面是改良后的冒牌排序法
*/

public class CHO8_01 extends Object
{
    int data[]=new int[]{4,6,2,7,8,9};

    public static void main(String args[]){
        long startTime=System.currentTimeMillis();//计算执行时间

        CHO8_01 text=new CHO8_01();
        int i,j,temp;
        System.out.println("改良后的冒泡排序法:");
        System.out.println("请输入数据:");
        text.showdata();
        text.bubble();
        long endTime=System.currentTimeMillis();
        System.out.println("程序运行时间:"+(endTime-startTime)+"ms");

    }

    /**
     * showdata()方法打印出数据
     */
    private void showdata() {
        // TODO Auto-generated method stub
        for(int i=0;i<6;i++){
            System.out.println(data[i]+"");
        }
        System.out.println("\n");
    }

    /**
     * sort()方法进行排序
     */
    private void bubble() {
        // TODO Auto-generated method stub

        int i,j,flag,temp;
        for(i=5;i>0;i--){
            flag=0;//flag用来判断是否有交换
            for(j=0;j<i;j++){
                if(data[j]>data[j+1]){
                    temp=data[j+1];
                    data[j+1]=data[j];
                    data[j]=temp;
                    flag++;   //如果有交换则flag不为零
                }
            }
            if(flag==0){ //flag为零则不进行交换
                break;
            }
            System.out.println("第"+(6-i)+"此排序结果");
            for(j=0;j<6;j++){
                System.out.println(data[j]+"");
            }
            System.out.println("\n");
        }
        System.out.println("排序后的结果为:");
        showdata();     
    }   
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

实现冒泡排序、希尔排序等多种算法示例

实现以下排序 插入排序O(n^2) 冒泡排序 O(n^2) 选择排序 O(n^2) 快速排序 O(n log n) 堆排序 O(n log n) 归并排序 O(n log n) 希尔...

mips 指令实现的冒泡排序

  • 2017年11月08日 13:11
  • 698B
  • 下载

冒泡排序法

  • 2016年07月31日 23:31
  • 5KB
  • 下载

伪冒泡排序------数组/链表实现

/*Bubblesort_1.cpp-------伪冒泡排序*/ /*  分别用数组和链表实现伪装冒泡排序。  第i个元素,依次跟第i+1,i+2个元进行比较,如果前者大,这交换元素。 */ ...

冒泡排序法

  • 2016年10月22日 16:07
  • 574B
  • 下载

C Sharp冒泡排序

  • 2017年08月24日 19:19
  • 47KB
  • 下载

【每日算法】插入&选择&冒泡排序

在正式讲排序算法之前,我们先看一个概念:排序算法的稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[...

基于Python的冒泡排序代码

  • 2017年07月25日 21:21
  • 1KB
  • 下载

冒泡排序11

  • 2017年08月03日 20:55
  • 32.62MB
  • 下载

用PHP如何实现冒泡排序

1、首先我们必须弄清楚什么是冒泡排序,不理解冒泡排序的原理,我们就无法写出代码。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序示例
举报原因:
原因补充:

(最多只允许输入30个字)