您的位置:首页 > 其它

数组的几种基本操作算法(冒泡、选择、二分法查找)

2017-07-05 15:42 281 查看
数组的几种基本操作算法(冒泡、选择、二分法查找)

案例一:冒泡排序

原理分析:



(从小到大排序)存在10个不同大小的气泡,由底至上地把较少的气泡逐步地向上升,这样经过遍历一次后,最小的气泡就会被上升到顶(下标为0),然后再从底至上地这样升,循环直至十个气泡大小有序。冒泡的核心思想是:比较数字的大小,让最大的数字不断上浮,小的数字下沉。

/**

 * 冒泡排序    

 * @param b

 * @return

 */

public static int[]  bubble(int[] b){

    

    for (int i = 0; i < b.length; i++) {

        for (int j = 0; j < b.length-i-1; j++) {

            if (b[j]>b[j+1]) {  

                int temp = b[j+1];

                 b[j+1] = b[j];

                 b[j] = temp;

             }

        }

    }

    return b;

}

案例二:选择排序



原理分析:

                 选择排序算法,相当于位置固定,挑选合适的人。比如说这个位置是最矮个坐的,那么就从这群人中挑选出最矮个的,然后坐住这个位置,然后再挑选其次的。最后指导排序完成。

/**

 * 选择排序

 * @param b

 * @return

 */

public static int[] select(int[] b){

    //外循环,控制位置

    for (int i = 0; i < b.length; i++) {

    //内循环,控制比较对象    

        for (int j = i+1; j < b.length; j++) {

            if (b[i] > b[j]) {

                int temp = b[j];

                b[j]= b[i];

                b[i] = temp;

            }else{

                continue;

            }

        }

    }

    return b;    

}

案例三:二分法查找



二分法查询代码:

 /**

 * 二分法查找

 * @param arr

 * @param key

 * @return

 */

public static int halfSeach_2(int[] arr,int key){

    int min,max,mid;

    min = 0;

    max = arr.length-1;

    mid = (max+min)>>1; //(max+min)/2;

    while(arr[mid]!=key){

        if(key>arr[mid]){

            min = mid + 1;

        }

        else if(key<arr[mid])

            max = mid - 1;

        if(max<min)

            return -1;

        mid = (max+min)>>1;    

    }

    return mid;

}

              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: