zoukankan      html  css  js  c++  java
  • 二分查找法、选择查找法和冒泡排序

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

    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);
                  }
              }
           }
        }
  • 相关阅读:
    Android 多线程 打地鼠游戏
    Android 线程那些事儿
    Android 服务入门
    Android+Handler+Thread 那些事儿
    Android 数据库的线程合作
    Android 数据库中的数据给到ListView
    git 修改管理
    import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包(转载)
    VC++中开发汇编语言(转)
    C struct结构体内存对齐问题
  • 原文地址:https://www.cnblogs.com/bbthome/p/3554222.html
Copyright © 2011-2022 走看看