您的位置:首页 > 其它

数组常见常用的几种排序→→→冒泡→→选择→→插入

2012-08-29 17:01 357 查看
大家都知道数组的排序有很多种究竟哪种排序比较好呢? 究竟哪种排序的速度更快呢?

          我做最近做了一个小小的测试分享给大家!!!!

总结:

插入排序效率高 费内存

选择排序速度比冒泡快

Arrays.sort 的速度比选择排序快并且操作简单

View Code

package com.zhou.sort;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;

public class Test {

/**
* 冒泡。。。选择。。。。插入
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int len=8;
//int a[] = { 2, 6, 9, 7, 5, 3, 1, 4, 8 };
int [] a=new int[len];
for (int i = 0; i < len; i++) {
int t=(int) (((Math.random()*100)+1));
a[i]=t;
}
System.out.print("插入:");
insertSort i= new insertSort();
i.sort(a);

System.out.print("冒泡:");
Bubble Bubble= new Bubble();

//排序前打印系统时间
Calendar cal=Calendar.getInstance();
System.out.println(cal.getTime());
Bubble.sort(a);//21秒
//排序前打印系统时间
cal=Calendar.getInstance();
System.out.println(cal.getTime());

System.out.print("选择:");

Select s = new Select();
cal=Calendar.getInstance();
System.out.println(cal.getTime());
s.sort(a);   //10秒
//排序前打印系统时间
cal=Calendar.getInstance();
System.out.println(cal.getTime());

System.out.print("系统:");
cal=Calendar.getInstance();
System.out.println(cal.getTime());
Arrays.sort(a);//速度最快
cal=Calendar.getInstance();
System.out.println(cal.getTime());

// 输出
for (int j = 0; j < a.length; j++) {
System.out.print(a[j] + " ");
}
}

}
/*
* 插入排序    效率高  费内存
*/
class insertSort{
public void sort(int a[]) {
for (int i = 0; i < a.length; i++) {
int insertVal=a[i];
//insertVal准备和前一位数
int index=i-1;
while(index>=0&&insertVal<a[index]){
//将把a[index]向后移动
a[index+1]=a[index];
index--;
}
//将insertVal插入到适当位子
a[index+1]=insertVal;
}
// 输出
for (int j = 0; j < a.length; j++) {
System.out.print(a[j] + " ");
}
}

}

class Select {
public void sort(int a[]) {
/*
* 选择排序   速度比冒泡快
*/
// 外层循环 一共循环的次数
for (int i = 0; i < a.length - 1; i++) {
// 内层循环 逐个比较
for (int j = i + 1; j < a.length; j++) {
// 比较
if (a[i] > a[j]) {

int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}

}
// 输出
/*for (int j = 0; j < a.length; j++) {
System.out.print(a[j] + " ");
}*/
}
}

/*
* 冒泡排序
*/
class Bubble {
public void sort(int a[]) {

// 外层循环 一共循环的次数
for (int i = 0; i < a.length - 1; i++) {
// 内层循环 逐个比较
for (int j = 0; j < a.length - 1 - i; j++) {
// 比较
if (a[j] > a[j + 1]) {

int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}

}
// 输出
/*for (int j = 0; j < a.length; j++) {
System.out.print(a[j] + " ");
}*/
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: