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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • js数组添加数据和删除数据

    js数组添加数据和删除数据1.栈方法(1).push():向Array的末尾添加若干元素;(2).pop()函数:删除数组中的最后一个数据vararr=[1,2,3,4];arr.push(6,7,8);//push压栈向数组末尾添加元素console.log(arr);//arr=[1,2,3,4,6,7,8];vararr1…

  • oracle教程15 PlSql入门和基本用法举例(很齐全)

    oracle教程15 PlSql入门和基本用法举例(很齐全)无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。PLSQL的简介PLSQL的语法结构例子:SETSERVEROUTPUTONBEGIN –打印输出DBMS_OUTPUT.PUT_LINE(‘hel…

  • CAP原理和数据高可用性

    CAP原理和数据高可用性对网站而言,数据是最宝贵的资源,硬件可以购买,软件可以重构,但是数据(用户数据,交易数据,商品数据)一旦丢失,对网站的打击可以说是毁灭性的。数据高可用性数据高可用性包括如下几个方面的含义数据持久性保证数据可以持久存储,在各种情况下都不会出现数据丢失。为了实现数据持久性,不但在写入数据是需要写入持久性存储,还需要将数据备份到一个或多个副本,存放在不同的物理存储设备上,在某个存储故障发生是,数据不会丢失

  • 数据库主键和外键的作用_数据库外键约束的作用

    数据库主键和外键的作用_数据库外键约束的作用主键保证了数据的唯一性,外键保证了数据的完整性。主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。…

    2022年10月24日
  • phonegap+emberjs+python手机店发展,html5实现本地车类别~

    phonegap+emberjs+python手机店发展,html5实现本地车类别~

  • FRP内网穿透教程「建议收藏」

    FRP内网穿透教程「建议收藏」FRP内网穿透介绍frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。为什么使用frp通过在具有公网IP的节点上部署frp服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:客户端服务端通信支持TCP、KCP以及Websocket等多种协议。采用TCP连接流式复用,在单个连接间承载更多请求,节省连接建立时间。代理组间的负

发表回复

您的电子邮箱地址不会被公开。

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