基本算法

冒泡算法

public static void bubbleSort(int[] a) {
    for(int i = 0; i < a.length - 1; i++){//控制冒泡的总次数
            for(int j = 0; j < a.length - 1 - i; j++){//控制两两之间的比较
                if(a[j] > a[j + 1]){
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    }
}

选择排序

public static void selectionSort(int[] a) {        
    for(int i = 0; i < a.length - 1; i++) {// i是要交换至的位置
        int k = i;//k记录当前最小值的下标(可能变化)
        // 从k+1位置开始向右比较,寻找最小值的下标
        for(int j = k + 1; j < a.length; j++){
            if(a[j] < a[k]){ 
                k = j; //k记录目前找到的最小值所在的位置
            }
        }
 //完成上面循环后,k记录了当前轮最小值的下标
        if(i != k){  //交换a[i]和a[k]
            int temp = a[i];       
            a[i] = a[k];           
            a[k] = temp;
        }
    }    
}

插入排序

public static void insertSort(int[] a) {
    for (int i = 1; i < a.length; i++) {//新数的位置
        for (int j = i; j > 0; j--) {//与左边的依次比较
            if (a[j] < a[j - 1]) {//顺序需要调整则交换
                int temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
            } else {
                break;//提高效率,左边都是有序的,
                //新数据如果无需交换,则可以直接放入有序数列尾部
            }
        }
    }
}

顺序查找

public static int search(int[] a, int num) {        
    for(int i = 0; i < a.length; i++) {
        if(a[i] == num){
            return i;
        }
    } 
    return -1;
}

二分查找

public static int binarySearch(int[] a, int num) {
    int low = 0;                                  // 起点
    int upper = a.length - 1;              // 终点
    while (low <= upper) {//避免出现下标越界异常
        int mid = (low + upper) / 2;     // 中间点
        if (a[mid] < num) {                  // 中间点的值小于要查找的值
            low = mid + 1;                    // 更改查找的起点为中间点位置后一位
        } else if (a[mid] > num) {        // 中间点的值大于要查找的值
            upper = mid - 1;                 // 更改查找的终点为中间点位置前一位
        } else {                                   // 中间点的值等于要查找的值
            return mid;                         // 返回该位置
        }
    }
    return -1;
}

你可能感兴趣的:(基本算法)