大家好,又见面了,我是你们的朋友全栈君。
冒泡排序的算法的思想其实很简单就是逐个比较交换位次从而实现一个完整的排序,下面直接看代码吧。
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;
}
}
}
这是十个数据的测试
这是80000个随机数据的一个测试可以看到用了19s(非精确时间)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/156337.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...