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

原创 2012年03月22日 19:15:38
---------------------- 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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例

一、main函数args详解 public class TestArray{  public static void main(String args[]){ ...

黑马程序员--java中的几个简单排序

java package cn.test; public class Bubble { public static void main(String[] args) { int[] a =...

黑马程序员——Java基础语法:几种简单的排序算法的实现

------- android培训、java培训、期待与您交流! ----------         1.快速排序:它通过一趟排序将要排序的元素分割成独立的两部分,其中一部分的所有数据...

黑马程序员——冒泡排序、选择排序、二分查找的实例运用分析

最近在学习集合和数组的知识,经常遇到冒泡、选择,二分查找法的使用,今天就静下来,将它们好好总结一下,按照自己的理解和想法,将它们的原理写出来,加深下自己的印象。 ------Java培训、Androi...

黑马程序员——Java代理模式与实例

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、Java代理模式简介       即Proxy Pattern,23种java常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)