zoukankan      html  css  js  c++  java
  • 有标记的冒泡排序

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

    上代码

    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("
    tag " + tag);
        }
    
    }

    结果集:

    1
    0
    2 3 4 5 6 7 8 10 10 
    tag 0
  • 相关阅读:
    struts2文件上传下载
    struts2自定义拦截器
    JSP_Servlet 解决中文乱码登录问题
    ajax提交form表单
    sql语句大全
    spring
    struts2
    jsp_servlet
    jsp_servlet2
    数据库
  • 原文地址:https://www.cnblogs.com/ironmantony/p/bubblingSort.html
Copyright © 2011-2022 走看看