Java冒泡、选择排序以及二分法

package com.cn.core.action;
/**
 * 
 * maopao 
 * 创建人:jiangminghuang
 * 创建时间:2016-9-23日 -上午11:47:23
 * @version 1.0.0 
 *
 */
public class maopao {
 public static void main(String[] args) {
  
  // 1.冒泡排序
  int[] a={4,1,7,3,8,2};
  m(a);
  
  // 3.选择排序
  int[] z={4,1,7,3,8,2}; 
  xz(z);
  
  // 3.二分法
  int[] b = {1,3,6,8,12,15,19,20,35,60};
  int flag=20;
  int index = binarySearch(b,flag);
  System.out.println("3.二分法");
  System.out.println("小标:" + flag + " 数值: " + index);
  
 }
 
 //--------------------1.冒泡排序--------------------------------------
 public static void m(int[] a){
  for(int i=a.length-1;i>0;i--){
   for(int j=0;j<i;j++){
    if(a[j]>a[j+1]){
     int temp;
     temp=a[j];
     a[j]=a[j+1];
     a[j+1]=temp;
    }
   }
  }
  System.out.println("1.冒泡排序");
  for(int k=0;k<a.length;k++){
   System.out.print(" "+a[k]);
  }
  System.out.println("\n");
 }
 
 //--------------------2.选择排序--------------------------------------
 public static void xz(int[] a){    
  System.out.println("2.选择排序");
  for(int i=0;i<a.length - 1;i++){
   int min = i;
   
   for(int j=i+1;j < a.length; j++){
    if(a[min] > a[j]){
     min = j;
    }
   }
   // 交换
   if(min != i){
    int temp;
    temp = a[i];
    a[i] = a[min];
    a[min] = temp;
   }
   
   for(int k = 0; k < a.length; k++){
    System.out.print(a[k]);
   }
  }
  System.out.println("\n");
 }
 
 
 //--------------------3.二分法--------------------------------------
 public static int binarySearch(int[] b,int flag){          
  int startBegin=0;// 开始下标
  int endBegin=b.length-1;// 结束下标
  
  while(startBegin <= endBegin){
   int midPos = (startBegin+endBegin) / 2;// 折半
   if(flag == b[midPos]){
    return endBegin;
   }else if(flag > b[midPos]){
    startBegin = midPos + 1;
   }else if(flag < b[midPos]){ 
    startBegin = midPos - 1;
   }
  }
  return -1;
 }
 
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值