一、冒泡排序
package com.study.data.structures.sort;
import java.util.Arrays;
public class BubblingSort {
public static void main(String[] args) {
int[] arrays = new int[80000];
for (int i = 0; i < 80000; i++) {
arrays[i] = (int) (Math.random() * 80000);
}
new Thread(() -> {
method1(Arrays.copyOf(arrays, arrays.length));
}).start();
new Thread(() -> {
method2(Arrays.copyOf(arrays, arrays.length));
}).start();
}
private static void method1(int[] arrays) {
int temp = 0;
long startTime = System.currentTimeMillis();
for (int i = 0; i < arrays.length - 1; i++) {
for (int j = 0; j < arrays.length - 1 - i; j++) {
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间1::" + (endTime - startTime));
}
private static void method2(int[] arrays) {
int temp = 0;
boolean flag = false;
long startTime = System.currentTimeMillis();
for (int i = 0; i < arrays.length - 1; i++) {
flag = false;
for (int j = 0; j < arrays.length - 1 - i; j++) {
if (arrays[j] > arrays[j + 1]) {
flag = true;
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
if (!flag) {
break;
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间2::" + (endTime - startTime));
}
}
二、选择排序
package com.study.data.structures.sort;
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int[] arrays = new int[80000];
for (int i = 0; i < 80000; i++) {
arrays[i] = (int) (Math.random() * 80000);
}
new Thread(() -> {
method1(Arrays.copyOf(arrays, arrays.length));
}).start();
new Thread(() -> {
method2(Arrays.copyOf(arrays, arrays.length));
}).start();
}
private static void method1(int[] arrays) {
int temp = 0;
long startTime = System.currentTimeMillis();
for (int i = 0; i < arrays.length - 1; i++) {
for (int j = i + 1; j < arrays.length; j++) {
if (arrays[i] > arrays[j]) {
temp = arrays[i];
arrays[i] = arrays[j];
arrays[j] = temp;
}
}
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间1::" + (endTime - startTime));
}
private static void method2(int[] arrays) {
int temp = 0;
int minIndex = 0;
long startTime = System.currentTimeMillis();
for (int i = 0; i < arrays.length - 1; i++) {
minIndex = i;
for (int j = i + 1; j < arrays.length; j++) {
if (arrays[minIndex] > arrays[j]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arrays[i];
arrays[i] = arrays[minIndex];
arrays[minIndex] = temp;
}
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间2::" + (endTime - startTime));
}
}
三、插入排序
package com.study.data.structures.sort;
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arrays = new int[80000];
for (int i = 0; i < 80000; i++) {
arrays[i] = (int) (Math.random() * 80000);
}
new Thread(() -> {
method1(Arrays.copyOf(arrays, arrays.length));
}).start();
new Thread(() -> {
method2(Arrays.copyOf(arrays, arrays.length));
}).start();
}
private static void method1(int[] arrays) {
int insertVal = 0;
int insertIndex = 0;
long startTime = System.currentTimeMillis();
for (int i = 1; i < arrays.length; i++) {
insertVal = arrays[i];
insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < arrays[insertIndex]) {
arrays[insertIndex + 1] = arrays[insertIndex];
insertIndex--;
}
arrays[insertIndex + 1] = insertVal;
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间1::" + (endTime - startTime));
}
private static void method2(int[] arrays) {
int insertVal = 0;
int insertIndex = 0;
long startTime = System.currentTimeMillis();
for (int i = 1; i < arrays.length; i++) {
insertVal = arrays[i];
insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < arrays[insertIndex]) {
arrays[insertIndex + 1] = arrays[insertIndex];
insertIndex--;
}
if (insertIndex + 1 != i) {
arrays[insertIndex + 1] = insertVal;
}
}
long endTime = System.currentTimeMillis();
System.out.println("选择排序花费时间2::" + (endTime - startTime));
}
}
四、js版本
let arrays = [];
for (let i = 0; i < 80000; i++) {
arrays[i] = parseInt(Math.random() * 80000)
}
bubbleSort([...arrays])
function bubbleSort(arrays) {
let temp = 0;
let start = Date.now();
for (let i = 0; i < arrays.length - 1; i++) {
for (let j = 0; j < arrays.length - 1 - i; j++) {
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
}
}
}
let end = Date.now();
console.log('冒泡排序所花时间', start, end, end - start);
}
selectSort([...arrays])
function selectSort(arrays) {
let minIndex = 0;
let temp = 0;
let start = Date.now();
for (let i = 0; i < arrays.length; i++) {
minIndex = i;
for (let j = i + 1; j < arrays.length; j++) {
if (arrays[minIndex] > arrays[j]) {
minIndex = j;
}
}
if (minIndex != i) {
temp = arrays[minIndex]
arrays[minIndex] = arrays[i];
arrays[i] = temp;
}
}
let end = Date.now();
console.log('选择排序所花时间', start, end, end - start);
}
insertSort([...arrays])
function insertSort(arrays) {
let insertVal = 0;
let insertIndex = 0;
let start = Date.now();
for (let i = 1; i < arrays.length; i++) {
insertVal = arrays[i];
insertIndex = i - 1;
while (insertIndex >= 0 && insertVal < arrays[insertIndex]) {
arrays[insertIndex + 1] = arrays[insertIndex]
insertIndex--;
}
arrays[insertIndex + 1] = insertVal
}
let end = Date.now();
console.log('插入排序所花时间', start, end, end - start);
}