【数据结构与算法 11,互联网大厂面试必问的JVM底层原理

本文介绍了Java面试中常见的JVM底层原理,并提供了插入排序、希尔排序、快速排序和归并排序的实现。此外,还包含了相关面试题及答案的链接,以及微服务实战文档的分享。
摘要由CSDN通过智能技术生成
    int min = arr[minIndex];

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

        if(min > arr[j]){

            min = arr[j];

            minIndex = j;

        }

    }

    arr[minIndex] = arr[i];

    arr[i] = min;

}

}




4、速度测试



选择排序:120000数据,4秒



![](https://img-blog.csdnimg.cn/20200523091411841.png)



### (三)插入排序



1、基本思想



把n个待排序的元素第一位看成有序表,其它的看成无序表,排序过程中,每次从无序表中取出一个数,依次与有序表中的数进行比较,插入到合适的位置。



2、动态效果图



![](https://img-blog.csdnimg.cn/2020052200155496.gif)



3、代码实现



//插入排序

public static void insertSort(int[] arr ){

int insertVal = 0;

int insertIndex = 0;

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

    //定义待插入的数

    insertVal = arr[i];

    // 即arr[i]的前面这个数的下标

    insertIndex = i - 1;

    // 给insertVal 找到插入的位置

    // 说明

    // 1. insertIndex >= 0 保证在给insertVal 找插入位置,不越界

    // 2. insertVal < arr[insertIndex] 待插入的数,还没有找到插入位置

    // 3. 就需要将 arr[insertIndex] 后移

    while(insertIndex >= 0 && insertVal < arr[insertIndex]){

        arr[insertIndex+1] = arr[insertIndex];

        insertIndex--;

    }

    // 当退出while循环时,说明插入的位置找到, insertIndex + 1

    if(insertIndex + 1 != i){

        arr[insertIndex+1] = insertVal;

    }

}

}




4、速度测试



插入排序:120000数据,1秒



![](https://img-blog.csdnimg.cn/20200523091529335.png)



### (四)希尔排序



1、基本思想



希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法也是冲破O(n²)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较较远的元素。



2、效果图



![](https://img-blog.csdnimg.cn/20200523135326850.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值