美文网首页
基本算法

基本算法

作者: 湮灭_尘事 | 来源:发表于2018-04-26 15:57 被阅读9次

冒泡算法

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;
}

相关文章

  • 基本算法

    冒泡算法 选择排序 插入排序 顺序查找 二分查找

  • 基本算法

    预热姿势: 什么是二叉查找树 (二叉排序树) 1.红黑树 规则: 插入删除节点时的方法: 2. B-树 (也叫B树...

  • 基本算法

    1.冒泡算法 2.选择算法 *上面这两个算法耗时基本相同. 插入算法 *耗时比上面两个小 快速排序 Start...

  • 基本算法

    冒泡排序、插入排序、选择排序、快速排序、二分查找(Objective-C实现)

  • 基本算法

    排序 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对...

  • 基本算法

    题目汇总 面试中常用到机试题[https://cloud.tencent.com/developer/articl...

  • 基本算法

    分治 分治分治,即分而治之。分治,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问...

  • 基本KMeans和二分Kmeans的python实现

    基本Kmeans算法 二分KMeans算法

  • JVM垃圾回收(GC)整理总结学习

    摘要:基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法。 基本回收算法 1...

  • 最“懒惰”的kNN分类算法

    1. K-近邻算法#### k-近邻算法(k Nearest Neighbor),是最基本的分类算法,其基本思想是...

网友评论

      本文标题:基本算法

      本文链接:https://www.haomeiwen.com/subject/fbtmlftx.html