关闭

黑马程序员-java中的各种简单排序法实例

285人阅读 评论(0) 收藏 举报
---------------------- android培训java培训、期待与您交流! ----------------------演示各种简单排序算法

/**
 * 演示各种排序方法
 * @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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5033次
    • 积分:157
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档