/**
* 演示各种排序方法
* @author 李见黎
*2012-3-17
*/
import java.util.*;
public class Sort {
/**
* @param args
*/
public static void main(String[] args) {
// int arr[]={1,3,4,2,0,-5,6,7}; //最开始测试数组
/**
* 产生数组的过程
*/
int len=30;
int arr[]=new int[len];
for(int i=0;i<len;i++)
{
//让程序随机产生数,也是很实用的小技巧
//math.Random产生的是0~1的数
int r=(int)(Math.random()*len);
arr[i]=r;
}
/**
* 各种排序实例化
*/
Bubble bubble=new Bubble(); //冒泡排序
SelectSort selectSort=new SelectSort(); //选择排序
InsertSort iSort=new InsertSort(); //插入排序
/**
* 实现排序,并且显示时间
*/
Calendar calendar=Calendar.getInstance(); //掌握系统时间,很实用的小技巧
System.out.println("开始前的时间:"+calendar.getTime());
// selectSort.Sort(arr);
// bubble.bubbleSort(arr);
iSort.Sort(arr);
//重新获得实例,刷新时间
calendar=Calendar.getInstance();
System.out.println("开始后的时间:"+calendar.getTime());
/**
* 显示排序结果,打印是最费时间的
*/
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
}
}
/**
* 插入排序
* @author 李见黎
*2012-3-18
*/
class InsertSort
{
public void Sort(int []arr)
{
for(int i=0;i<arr.length;i++)
{
int insertValue=arr[i]; //待插入的数
//insertValue与前一个数比较
int index=i-1;
while(index>=0&&insertValue<arr[index])
{//保证index不能使负数,越界
//满足条件则把arr[index]向前移动
arr[index+1]=arr[index];
//将index向后移动
index--;
}
//将insertValue插入到适当的位置
arr[index+1]=insertValue;
}
}
}
/**
* 冒泡排序法
* @author 李见黎
*2012=3-17
*/
class Bubble
{
public void bubbleSort(int []arr)
{
int tempt=0;//中间变量
//排序
//外层排序,决定走几趟
for(int i=0;i<arr.length-1;i++)
{
//内层循环,开始逐一比较,如果发现前一个数比后一个数大,则交换
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{//前一个数比后一个数大,交换位置,把最大的放在最前面
tempt=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tempt;
}
}
}
}
}
/**
* 选择排序,速度比冒泡快点
* @author Administrator
*2012-3-17
*/
class SelectSort
{
public void Sort(int []arr)
{//将最小的数放到最前面
int tempt=0; //临时变量
for(int i=0;i<arr.length-1;i++)
{
int min=arr[i];//第一数最小
int minIndex=i;//记录最小数的下标
//第一个数不参与比较,从第二个数开始比较
for(int j=i+1;j<arr.length;j++)
{
if(min>arr[j])
{//修改最小值
min=arr[j];
minIndex=j;
}
}
//当退出for循环时就找到最小值,交换最小值
tempt=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=tempt;
}
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima