首页 > 其他 > 详细

有标记的冒泡排序

时间:2014-04-16 05:44:15      阅读:534      评论:0      收藏:0      [点我收藏+]

  平常的冒泡就算是所给序列是有序的,也会是n的平方的时间复杂度。使用一个标记,如果在一趟冒泡完毕之后发现没有交换任何元素,那么可以确定正在排待排序列已经有序,然后我们已经排好序的部分也已经有序,所以所有的待排序列已经有序。

上代码

bubuko.com,布布扣
package com.sort;

public class BubblingSort {

    public static void main(String[] args) {
        int[] a = {10,2,3,4,5,6,7,8,10};
        sort(a);

    }
    
    public static void sort(int[] a){
        int len = a.length;
        int tag = 0;//用来标记一趟冒泡是否有交换的,否则已经有序
        int temp;
        for(int i = len - 1;i > 0 ;i --){
            tag = 0; //在这里设置tag 为0
            for(int j = 0;j< i;j ++){
                if(a[j] > a[j+1]){
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                    tag = 1;
                }
            }
            System.out.println(tag);
            if(tag == 0)break;//如果一趟排序没有变化,说明待排序列已经有序
        }
        for(int i = 0; i < len ; i++){
            System.out.print(a[i] + " ");
        }
        System.out.print("\ntag " + tag);
    }

}
bubuko.com,布布扣

结果集:

1
0
2 3 4 5 6 7 8 10 10 
tag 0

 

有标记的冒泡排序,布布扣,bubuko.com

有标记的冒泡排序

原文:http://www.cnblogs.com/ironmantony/p/bubblingSort.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!