Chinaunix首页 | 论坛 | 博客
  • 博客访问: 657088
  • 博文数量: 121
  • 博客积分: 1425
  • 博客等级: 中尉
  • 技术积分: 2059
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-03 15:34
文章分类

全部博文(121)

文章存档

2018年(1)

2017年(2)

2016年(1)

2015年(11)

2014年(14)

2013年(47)

2012年(45)

分类: Java

2012-04-13 23:25:38

/**
 * @author:zhangzhengxing
 * @faction:二分法查找
 */
package com.zhang5;

public class Demo11 {

 public static void main(String[] args) {
  int array[]={-4,-1,1,2,3,4,5,6,7,9};
  Find f1=new Find();
  f1.find1(0, array.length-1, 00, array);
 }

}
//二分法查找(前提是你要排序好才可以查找)
class Find
{
 public void find1(int left,int right,int val,int arr[])
 {
  //先找到中间的下标
  int mid=(left+right)/2;
  int midval=arr[mid];  //最中间的值
  //首先要右边大于左边
  if(right>=left)
  {   //如果中间的大于你要找的数,那就找左边的数
   if(midval>val) 
   {   //这个是递归的调用
    find1(left,mid-1,val,arr);
   }else{
    if(mid    {
     find1(mid+1,right,val,arr);
    }else
     
    {
     if(midval==val)
     {
     System.out.println("你要的下标是"+mid);
         }
    }
   }
   }
 }
}


/**
 * @author:zhangzhengxing
 * @faction:排序的操作
 */
package com.zhang5;
import java.util.*;
public class Demo10 {

 public static void main(String[] args) {
  int len=40000;
    int array[]=new int[len];
    for(int i=0;i    {   //这个是产生随机的数字
    int array12=(int)(Math.random()*len);
        array[i]=array12;
    }
    int arra[]={1,23,5,6,-6,-4,89};
    Bubbing bus=new Bubbing();
    Calendar ca=Calendar.getInstance();
    System.out.println("打印前"+ca.getTime());
    bus.taxsis(array);      //引用传递
    ca=Calendar.getInstance();
    System.out.println("打印后"+ca.getTime());
   
    Select se=new Select();
    se.taxsis(arra);    //引用传递
   
    //输出
    for(int i=0;i    {
   System.out.print(array[i]+" ");
     }
    System.out.println(  );
   
   
    //输出
    for(int i=0;i    {
   System.out.print(arra[i]+" ");
     }
 }
}
//冒泡排序
class Bubbing
{   public void taxsis(int arr[])     //引用传递的方法
    {
    //排序(冒泡)
   //最外层是用来控制他排了多少趟
    int temp=0;
   for(int i=0;i      {  //内层是循环排序,逐个比较把大的交换位置
    for(int j=0;j    {
     //开始比较
     if(arr[j]     {
      temp=arr[j+1];
      arr[j+1]=arr[j];
      arr[j]=temp;
     }
    }
   }
 

  }
}

//选择排序法
class Select
{
 public void taxsis(int arr1[])
 {
  //首先认为第一个是最小的
  int temp=0;
  for(int i=0;i  {
   int min=arr1[i];     //认为这个是最小的
   int index=0;     //用这个来记录下表
   for(int j=i+1;j   {
      //把最小的值给他
       min=arr1[j];
       //修改最小值的下标
       index=j;
   }
   //退出循环跟下一个比较
     temp=arr1[i];
     arr1[i]=arr1[index];
     arr1[index]=temp;
   
  }
 }
}
//插入排序
class Insert
{
 public void taxsis(int arr2[])
 {
  for(int i=1;i  {
   int arrval=arr2[i];   //准备添加的数
   //准备和下面一个数字比较
   int index=i-1;
   while(index>=0 && arrval   {
    //将arr2[index]向后移动一位
    arr2[index+1]=arr2[index];
    //index向前移动一位
    index--;
    
   }
   //可以插入
   arr2[index+1]=arrval;
  }
 }
}

阅读(1496) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

zhangzhengxing2012-04-18 20:31:30

stremail2012-04-18 18:28:32

图片MM2012-04-17 22:30:12

恩恩,还不错,楼主多多加油吧

3783335812012-04-16 22:07:52

思路其实和C的都差不多,只是语言不一样