冒泡排序法,选择排序,二分查找法

package com.zixue.StringBuilder;

public class BinarySearchDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] i = {5,6,8,45,21,35,36,325,52,35,48};
    bubbleSort(i);
    int b = binarySearch(i,45);
    System.out.println(b);
}
/**
 * 二分查找法
 * @param a
 * @param key
 * @return mid
 */
private static int binarySearch(int[] a, int key) {
    int low = 0;
    int high = a.length - 1;
    while (low <= high) {
        int mid = (low + high) >>> 1;
        int midVal = a[mid];

        if (midVal < key)
            low = mid + 1;
        else if (midVal > key)
            high = mid - 1;
        else
            return mid; // key found
    }
    return -(low + 1); // key not found.
}
/**
 * 冒泡排序法:
 * 思想:两两比较
 *      第一趟,会把第一大的放在i[n]
 *      第二趟,会把第二大的放在i[n-1]
 *      以此类推,经过n-1趟会把第n-1大,也就是倒数第二小的放在i[1];
 * @param i
 */
public static void bubbleSort(int[] i){
    for(int x = 0; x < i.length - 1; x++){         //因为经过n-1趟就可以排完
        for(int y = 0; y < i.length - 1 - x; y++){ //每趟过后都会少一个元素参加比较
            if(i[y] > i[y+1]){                     //相邻的比较,把大的放在后面
                int temp = i[x];
                i[y] = i[y+1];
                i[y+1] = temp;
            }
        }
    }
}
/**
 * 选择排序法:
 * 思想:拿着每次的第一个数和后面每一个比较。
 *        第一次在i[1]到i[n]中找出最小的放在i[1]
 *        第二次在i[2]到i[n]中找出最小的放在i[2]
 *       以此类推:最后在i[n-1]与i[n]中找出最小的放在i[n-1]中
 * @param i
 */
public static void selectSort(int[] i){
    for(int x = 0; x < i.length - 1; x++){         //经过n-1趟比较完
        for(int y = x + 1; y < i.length ; y++){    //已经选出来的不参与比较,
            if(i[x] > i[y]){                       //每次都是一个数与它后面的数比较
                int temp = i[x];                   //把最小的数放在比较范围内的最前面
                i[x] = i[y];
                i[y] = temp;
            }
        }
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值