1、冒泡排序(优化前与优化后对比)
package com.yu.algorithm;
import java.util.Random;
public class Sort {
public static void main(String args[]){
int a[]=new int[100];
Random arrayRandm=new Random();
for(int i=0;i<100;i++) {
a[i] = arrayRandm.nextInt(1000);
}
int b[]= a;
System.out.println("字符生成结束");
System.out.println("正常冒泡时间");
long startTime=System.currentTimeMillis();
bubbleSort(a);
long endTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
System.out.println("优化后冒泡时间");
long startTimeOptimize=System.currentTimeMillis();
bubbleSortOptimize(b);
long endTimeOptimize=System.currentTimeMillis();
System.out.println(endTimeOptimize-startTimeOptimize);
for(int te=0;te<a.length;te++){
if(te!=a.length-1) {
System.out.print(a[te]+" ");
}else{
System.out.print(a[te]);
}
}
System.out.println();
for(int te=0;te<b.length;te++){
if(te!=b.length-1) {
System.out.print(b[te]+" ");
}else{
System.out.print(b[te]);
}
}
System.out.println();
}
/**
* Bubble Sort(冒泡排序) 优化前
*/
public static void bubbleSort(int[] array){
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
/**
*Bubble Sort(冒泡排序) 优化后
*/
public static void bubbleSortOptimize(int[] array){
for(int i=0;i<array.length-1;i++){
//增加有序标志,默认该次循环为有序的,不需要进行交换
boolean flag=true;
for(int j=0;j<array.length-1-i;j++){
if(array[j]<array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
//若进行交换,则设置有序标志为false
flag=false;
}
}
//该次循环为有序的,则直接跳出循环
if(flag){
return;
}
}
}
}
(1)先已生成100个数字为例
(2)再生成10000个数字为例
(3)在生成100000个数字为例,这次去掉结果输出
**
由此可以看出优化后的效率在大量数据时的提升是巨大的**