算法_冒泡排序法(04)
来源:互联网 发布:centos 7 mount ntfs 编辑:程序博客网 时间:2024/06/08 10:11
java源代码实现:
public class Bubble {//冒泡排序法public void sort(int [] arr){//外层循环//决定此排序走几趟for(int i=0;i<arr.length-1;i++){//由于是前面一个数和后面一个数比较,必须保证后面一个数不能越界,所以length-1//内层循环//交换for(int j=0;j<arr.length-1-i;j++){//进行一次循环后,最后一个数肯定排好了,类推,循环几次后,后面就有几个数已经排好了if(arr[j]>arr[j+1]){int temp=arr[j];//把较大的数记录下来arr[j]=arr[j+1];//此处就是为什么外层for循环必须-1的原因了,否则会越界arr[j+1]=temp;}}}}//显示public void show(int []arr){for(int i:arr){System.out.print(i+" ");}}}测试代码:
public static void main(String[] args) {final int COUNT=100000;//十万int []arr=new int[COUNT];//={1,6,0,-1,9,-2,12,-90};for(int i=0;i<COUNT;i++){arr[i]=(int)(Math.random()*COUNT);//Math.random产生一个0~1的小数,且速度比Random快,因为Random需要实例化;随机COUNT个数}long start=System.currentTimeMillis();//创建一个冒泡类Bubble b=new Bubble();b.sort(arr);long end=System.currentTimeMillis();System.out.println("排序使用的时间是:"+(end-start)/1000+"s");}运行结果:
排序使用的时间是:31s
这是一个最经典的排序方法,第一个算法就是学的他,虽然速度有点慢,但是基本思想还是需要了解一下的
总结:
后面三个排序法,对于10万个无序整数来说,插入式排序(7s)比选择式排序(16s)快一倍,而选择式排序(16s)又比冒泡排序(31s)快一倍,可十万数据量对快速排序法来说,简直就是小儿科(16ms);哪怕是一亿个无序整数排好也只需要22s,因此在不需要考虑内存开销的情况下,优先考虑快速排序法,需兼顾速度和内存开销的情况下,可选择插入式排序法
当然还有其他排序方法,目前只接触这常见的4种排序方法,欢迎和大家一起讨论学习
- 算法_冒泡排序法(04)
- 排序算法_冒泡排序
- 算法_冒泡排序算法
- 经典算法_冒泡排序
- JAVA_算法_冒泡排序
- 排序算法-交换排序_冒泡排序
- 数据结构(C#)_排序算法(冒泡排序)
- 排序算法2_冒泡排序
- 经典算法2_冒泡排序
- [黑马程序员]_冒泡排序算法
- [黑马程序员]_冒泡排序算法
- 数据结构与算法_冒泡排序
- 1.8_冒泡排序法
- 选择_冒泡 排序法
- 算法:冒泡排序法
- 算法-冒泡排序法
- [算法]:冒泡排序法
- 冒泡法排序算法
- 找了半天富文本编辑器,原来csdn的xhEditor就很好用
- 抓proxyhttp.net代理脚本
- 算法_选择式排序法(03)
- Dom4j中文异常处理:Invalid byte 2 of 2-byte UTF-8 sequence
- Hibernate and Multi-threading
- 算法_冒泡排序法(04)
- asp.net 截屏 截取web页面
- 程序江湖:第三章 莫等闲白了少年头
- Python模块学习 ---- struct 数据格式转换
- 关键词:键盘触发事件、QList用法、清除/获得焦点、CSS、Qt初学教程
- Android游戏开发之处理按键的响应方式(二十二)
- 用rsync实现网站镜像和备份
- JBPM流程部署校验之java利用XSD校验XML
- Python Collection 小技巧