java 性能 排序_java几种排序方式速度的简单测试?

冒泡排序,选择排序,插入排序,快速排序

1、冒泡排序是排序里面最简单的了,但性能也最差,数量小的时候还可以,数量一多,是非常慢的。

public static void bubbleSort(int[] arr){

for(int i=0;i

for(int j=0;j

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

int temp =arr[j];

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

arr[j+1]=temp;

}

}

}

}

2 选择排序(最慢)

选择排序的时间复杂度还有空间复杂度跟冒泡是一样的。

public static void chooseSort(int[] arr){

for(int i=0;i

for(int j=i+1;j

if(arr[i]>arr[j]){

int temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}

}

3、插入排序

插入排序的时间复杂度也是O(n*n),空间复杂度也是O(1)。

public static void insertSort(int[] arr){

for(int i=1;i

for(int j=0;j

if(arr[i]

int temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}

}

4、快速排序(最快)

public static void quickSort(int[] arr,int head,int tail){

int i=head,j=tail;

if(i>j){

return;

}

int key=arr[i];

while (i

while(i

j--;

}

if(i

arr[i++]=arr[j];

}

while(i=arr[i]){

i++;

}

if(i

arr[j--]=arr[i];

}

}

arr[j]=key;

quickSort(arr, head, j-1);

quickSort(arr, j+1, tail);

}

测试:

public static int[] getArr(){

int arr[]=new int[100000];

for(int i=0;i

arr[i]=new Random().nextInt(arr.length)+1;

}

return arr;

}

public static void main(String[] args) {

int arr1[]=getArr();

int arr2[]=getArr();

int arr3[]=getArr();

int arr4[]=getArr();

long s1=System.currentTimeMillis();

bubbleSort(arr1);

long e1=System.currentTimeMillis();

System.out.println("bubbleSort:"+(e1-s1)+"毫秒");

long s2=System.currentTimeMillis();

chooseSort(arr2);

long e2=System.currentTimeMillis();

System.out.println("chooseSort:"+(e2-s1)+"毫秒");

long s3=System.currentTimeMillis();

insertSort(arr3);

long e3=System.currentTimeMillis();

System.out.println("insertSort:"+(e3-s3)+"毫秒");

long s4=System.currentTimeMillis();

quickSort(arr4, 0, arr4.length-1);

long e4=System.currentTimeMillis();

System.out.println("quickSort:"+(e4-s4)+"毫秒");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值