java写一个冒泡排序_冒泡排序 一个java例程

java写一个冒泡排序_冒泡排序 一个java例程冒泡排序的算法的思想其实很简单就是逐个比较交换位次从而实现一个完整的排序,下面直接看代码吧。packagealgorithm;importjava.text.SimpleDateFormat;importjava.util.Date;/**时间:2019822*作者:latefly*功能:一个冒泡排序的展示,包含一个原始的方法以及一个优化以后的方法****/publicclass…

大家好,又见面了,我是你们的朋友全栈君。

冒泡排序的算法的思想其实很简单就是逐个比较交换位次从而实现一个完整的排序,下面直接看代码吧。

package algorithm;

import java.text.SimpleDateFormat;

import java.util.Date;

/*

* 时间:2019 8 22

* 作者:latefly

* 功能:一个冒泡排序的展示,包含一个原始的方法以及一个优化以后的方法

*

*

**/

public class BubleSort {

static int counter = 0;

static int arrSize = 80000;// 此处实测大概是19-22之间

public static void main(String args[]) {

int arr[] = new int[arrSize];

for (int i = 0; i < arrSize; i++) {

arr[i] = (int) (Math.random() * 8000000);

}

// baseSort(arr);

Date dateStart = new Date();

SimpleDateFormat format = new SimpleDateFormat(“YYYY-MM-DD hh:mm:ss”);

String start = format.format(dateStart);

System.out.println(“开始时间:” + start);

// 开始排序

rectifySort(arr);

Date endStart = new Date();

String end = format.format(endStart);

System.out.println(“结束时间:” + end);

// System.out.println(Arrays.toString(arr));

}

// 一个基本的展示冒泡排序

public static void baseSort(int arr[]) {

int i, j, temp;

for (i = 0; i < arr.length – 1; i++) {

for (j = 0; j < arr.length – 1; j++) {

if (arr[j] > arr[j + 1]) {

temp = arr[j + 1];

arr[j + 1] = arr[j];

arr[j] = temp;

counter++;

}

}

}

}

// 此处的排序是经过优化的,change用于判断每一轮是否有交换发生

// 如果没有那么就是排序已经完成

public static void rectifySort(int arr[]) {

int i, j, temp;

boolean change = true;

for (i = 0; i < arr.length – 1; i++) {

change=true;

for (j = 0; j < arr.length – 1 – i; j++) {

if (arr[j] > arr[j + 1]) {

temp = arr[j + 1];

arr[j + 1] = arr[j];

arr[j] = temp;

counter++;

change = false;

}

}

if (change)

break;

}

}

}

这是十个数据的测试

d22ae9d2afde351478b7dfc58136e1ab.png

这是80000个随机数据的一个测试可以看到用了19s(非精确时间)

c86ad8b782ebe3aa552122237a49e267.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156337.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 最炫python表白代码_有趣的python代码表白

    最炫python表白代码_有趣的python代码表白文章目录前言演示网站制作部署网站二维码制作总结前言跟着我做,不要跳着看,否则你会失败。第一步是制作二维码;第二步是制作网站。演示具体成果地址:https://yanghanwen.xyz/ai/网站制作首先你需要下载我的这个完整项目:链接:https://pan.baidu.com/s/1EmRehx_gRnT5hLjJvKuAIg提取码:pz1y–来自百度网盘超级会员V2的分享下载好后文件目录如下:然后你需要注意的是我把img里面的图片删了,涉及隐私,大家自己替换自己追

    2022年8月30日
    3
  • stemwin实战篇_赖世雄入门篇

    stemwin实战篇_赖世雄入门篇特别说明:原创教程,未经许可禁止转载,教程采用回复可见的形式,谢谢大家的支持。armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立,链接如下:http://bbs.

    2022年8月4日
    3
  • SpringMVC工作流程及其原理

    SpringMVC工作流程及其原理1、序言一、什么是SpringMVC?pring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。springmvc是一个基于mvc的web框架。springmvc是spring框架的一个模块,springmvc和s…

    2022年6月7日
    23
  • C++实现matlab中的interp1和interp2插值「建议收藏」

    C++实现matlab中的interp1和interp2插值「建议收藏」头文件interpfun.h#ifndefINTERPFUN_H#defineINTERPFUN_H#include"math.h"#include&lt;stdio.h&gt;#include&lt;string.h&gt; #ifndefSafeDeleteVec#defineSafeDeleteVec(X){if((X))delete(X);(X)=NULL;}#endi…

    2022年5月18日
    153
  • Bitblt函数(API)详解[通俗易懂]

    Bitblt函数(API)详解[通俗易懂]Bitblt作用将某一内存块的数据传送到另一内存块,前一内存块被称为"源",后一内存块被称为"目标"图象程序开发者使用Blit的函数在内存中将某页面上的一幅位图

    2022年7月2日
    38
  • java 多态[通俗易懂]

    java 多态[通俗易懂]多态的情况下,子父类存在同名的成员变量或成员方法优先调用问题1.多态的情况下,子父类存在同名的成员变量时,默认访问的是父类的成员变量数据.2.多态的情况下,子父类存在同名的非静态函数的时候,默认是调用子类的成员函数.3.多态的情况下,子父类存在同名的静态函数时,默认是调用父类的成员函数.原因:java多态的实现,首先说成员变量,因为在java中,一个对象实例是存储在堆中的,而这个对象包含的内容有对象头,对象体以及对其字节,首先对象头存放的是对象运行时的数据,像是hashcode,锁标识,类型指针,

    2022年7月7日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号