二分查找法、选择查找法和冒泡排序

一、查找:在一个数组中,查找某个数有两种

1、选择查找法:

   1.1 在数组中逐个去匹配需要找的值,都是从头开始匹配

   

    //选择查法
    public static int selectSearch(int[] ls,int key)
    {
        for(int i=0;i<ls.length;i++)
        {
           if(ls[i]==key)
               return i;
        }
        return -1;
    }

2、二分查找法

 2.1 将数组一分为二,先用中间数匹配查找数,若大于中间数,则在中间数和末尾数间查找,则继续一分为二,找出中间值,再继续匹配

    //二分查找法,前提是数据必须是有序的
    public static int binarySearch(int[] ls,int key)
    {
         int min = 0;
         int max = ls.length-1;
         int mid = (max+min)>>1;

         while(min < max)
         {
            if(ls[mid]==key)
                return mid;
            if(ls[mid]>key)
                max = mid -1;
            else if(ls[mid]<key)
                min = mid+1;
            mid = (max+min)>>1;
         }
         return -1;
    }


二、排序

 1、冒泡排序,将相邻的数比较,将最大数冒在最上面

//冒泡排序
    public static void topSort(int[] chs)
    {
        for(int i=0;i<chs.length-1;i++)
        {
            for(int y=0;y<chs.length-1-i;y++)
            {
                if(chs[y]>chs[y+1])
                {
                    /*
                    int temp = chs[y];
                    chs[y] = chs[y+1];
                    chs[y+1] = temp;
                    */
                    trans(chs,y,y+1);
                }
            }
        }
    }

    private static void trans(int[] chs,int a,int b)
    {
         int temp = chs[a];
         chs[a] = chs[b];
         chs[b] = temp;
    }

2、普通查找法:先从第一位和其他位依次比较

    public static void sort(int[] chs)
    {
       for(int i=0;i<chs.length-1;i++)
       { 
          for(int y=i+1;y<chs.length;y++)
          {
              if(chs[i]>chs[y])
              {
                  /*
                    int temp = chs[i];
                    chs[i] = chs[y];
                    chs[y] = temp;
                    */
                    trans(chs,i,y);
              }
          }
       }
    }

 

posted @ 2014-02-18 14:28  徽州猿人  阅读(347)  评论(0编辑  收藏  举报