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

来源:互联网 发布:sql server 2005 64位 编辑:程序博客网 时间:2024/06/10 18:01


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
原创粉丝点击