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

---------------------- 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值