java 几种基础算法的实现 (五)

冒泡排序

选择排序

插入排序

    /**
  1.  
    * 数组排序法
  2.  
    */
  3.  
    public class SelectSort {
  4.  
    public static void main(String[] args) {
  5.  
    int a[]={5,2,8,4,1,9,16};
  6.  
    System.out.println("冒泡排序法:"+Arrays.toString(bubble(a)));
  7.  
    int b[]={5,2,8,4,1,9,16};
  8.  
    System.out.println("选择排序法"+Arrays.toString(select(b)));
  9.  
    int c[]={5,2,8,4,1,9,16};
  10.  
    System.out.println("插入排序法"+Arrays.toString(insert(c)));
  11.  
     
  12.  
    System.out.println("位置:"+find(a,8));
  13.  
    }
  14.  
     
  15.  
    /**
  16.  
    * 冒泡法
  17.  
    * @param a 排序数组
  18.  
    * @return 计算完的数组
  19.  
    */
  20.  
    public static int [] bubble(int a[]){
  21.  
    for(int i=0;i<a.length-1;i++){
  22.  
    for(int j=0;j<a.length-i-1;j++){
  23.  
    if(a[j]<a[j+1]){
  24.  
    int temp=a[j];
  25.  
    a[j]=a[j+1];
  26.  
    a[j+1]=temp;
  27.  
    }
  28.  
    }
  29.  
    }
  30.  
    return a;
  31.  
    }
  32.  
     
  33.  
    /**
  34.  
    * 选择排序法 优于冒泡法
  35.  
    * @param a 排序数组
  36.  
    * @return 计算完的数组
  37.  
    */
  38.  
     
  39.  
    public static int [] select(int a[]){
  40.  
    for(int i=0;i<a.length-1;i++){
  41.  
    int min=i;
  42.  
    for(int j=i+1;j<a.length;j++){
  43.  
    if(a[min]>a[j]){
  44.  
    min=j;
  45.  
    }
  46.  
    }
  47.  
    if(min!=i){
  48.  
    int temp=a[i];
  49.  
    a[i]=a[min];
  50.  
    a[min]=temp;
  51.  
    }
  52.  
    }
  53.  
    return a;
  54.  
    }
  55.  
     
  56.  
    /**
  57.  
    * 插入排序法 优于前两种
  58.  
    * @param a 排序数组
  59.  
    * @return 计算完的数组
  60.  
    */
  61.  
    public static int [] insert(int a[]){
  62.  
    int compare;
  63.  
    for(int mark=1;mark<a.length;mark++){
  64.  
    int temp =a[mark];
  65.  
    compare=mark;
  66.  
    while(compare>0&&a[compare-1]>temp){
  67.  
    a[compare]=a[compare-1];
  68.  
    compare--;
  69.  
    }
  70.  
    a[compare]=temp;
  71.  
    }
  72.  
    return a;
  73.  
    }
  74.  
     
  75.  
    /**
  76.  
    * 二分法查找,前提是数组已经有序 小到大的
  77.  
    * @param a 由小到大的有序数组
  78.  
    * @param value 需要找的值
  79.  
    * @return
  80.  
    */
  81.  
    public static int find(int a[],int value){
  82.  
    int start=0;
  83.  
    int end=a.length-1;
  84.  
    while(end>=start){
  85.  
    int index =(start + end )/2;
  86.  
    if(a[index]==value){
  87.  
    return index;
  88.  
    }else if(a[index]>value){
  89.  
    end=index-1;
  90.  
    }else{
  91.  
    start = index+1;
  92.  
    }
  93.  
    }
  94.  
    return a.length;
  95.  
    }
  96.  
     
  97.  
    }
  98.  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值