搜索
首页php教程PHP开发冒泡排序优化版,性能近乎翻倍

冒泡排序优化版,性能近乎翻倍

Dec 19, 2016 pm 01:42 PM
冒泡排序

原始的冒泡排序相对而言是非常耗时的,即使一个数组经过几轮交换已经变的有序了,例如[2,1,3,4,5,6,7]这个数组,经过第一轮,已经变成有序的了,但顽固的冒泡还是要继续进行没有营养的两两比较,从而牺牲了时间。

如果用一个flag来判断一下,当前数组是否已经有序,如果有序就退出循环,这样可以明显的提高冒泡排序的表现~

由于冒泡排序的时间复杂度为O(n*n)所以当数据越多的时候,越慢,非常不适合大数据的排序,所以我们测试的时候也是用的长度为800的随机数组。

代码如下:

package go.derek;
import java.util.*;
public class Sort {
 //冒泡排序
 public void bubbleSort(int[] arr){
  for(int i=0;i for(int j=arr.length-1;j>i;j--){
    if(arr[j] int tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
}
}
}
//冒泡排序的改良版
public void bubbleSort_plus(int[] arr){
boolean flag=true;
for(int i=0;i flag=false;
for(int j=arr.length-1;j>i;j--){
    if(arr[j]     flag=true;
     int tmp=arr[j];
     arr[j]=arr[j-1];
     arr[j-1]=tmp;
    }
   }
  }
 }
 public static void main(String[] args){
  Sort s=new Sort();
  int[] arr1=new int[800];
  for(int i=0;i   arr1[i]=new Random().nextInt(800)+1;
  }
  int[] arr2=new int[800];
  for(int i=0;i   arr2[i]=new Random().nextInt(800)+1;
  }
  long n=System.currentTimeMillis();
  s.bubbleSort_plus(arr1);
  long m=System.currentTimeMillis();
  System.out.println("冒泡排序耗时:"+(m-n)+"ms");
  long a=System.currentTimeMillis();
  s.bubbleSort_plus(arr2);
  long b=System.currentTimeMillis();
  System.out.println("优化之后耗时:"+(b-a)+"ms");
 }
}

多次运行之后发现了效果最明显的一次结果:

冒泡排序耗时:12ms
优化之后耗时:4ms

可以这个flag的重要性哦~


更多冒泡排序优化版,性能近乎翻倍相关文章请关注PHP中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)