笔试算法题:冒泡排序(Bubble Sort),二分查找,二叉树三种遍历

Posted 我是一个邓疯子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔试算法题:冒泡排序(Bubble Sort),二分查找,二叉树三种遍历相关的知识,希望对你有一定的参考价值。

冒泡排序:

  • 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。
  • 直观表达,每一趟遍历,将一个最大的数移到序列末尾。

算法描述:
比较相邻的元素,如果前一个比后一个大,交换之。
第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
第二趟将第二大的数移动至倒数第二位
......
因此需要n-1趟;
动图实现,请看摘要的动图

JAVA
    public static void bubbleSort(int arr[]) {

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

                if(arr[j]>arr[j+1]) {
                    int temp = arr[j];
                    
                    arr[j]=arr[j+1];
                    
                    arr[j+1]=temp;
            }
            }    
        }
    }

二分查找

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.

查找过程
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

Java
public static int binarySearch(Integer[] srcArray, int des) {
    //定义初始最小、最大索引
    int start = 0;
    int end = srcArray.length - 1;
    //确保不会出现重复查找,越界
    while (start <= end) {
        //计算出中间索引值
        int middle = (end + start)>>>1 ;//防止溢出
        if (des == srcArray[middle]) {
            return middle;
        //判断下限
        } else if (des < srcArray[middle]) {
            end = middle - 1;
        //判断上限
        } else {
            start = middle + 1;
        }
    }
    //若没有,则返回-1
    return -1;
}

二叉树的三种遍历

本文只归纳一些简单的笔试题,供萌新的自己学习.

以上是关于笔试算法题:冒泡排序(Bubble Sort),二分查找,二叉树三种遍历的主要内容,如果未能解决你的问题,请参考以下文章

24. 冒泡排序(bubble sort)

经典排序算法 - 冒泡排序Bubble sort

算法解析冒泡排序 Bubble Sort

排序算法之冒泡排序(Bubble Sort)

经典排序算法之冒泡排序(Bubble Sort)

冒泡排序 (Bubble Sort)