当前位置: 首页 > news >正文

经典算法面试题——Java篇-附带赠书活动,评论区随机选取一人赠书

目录

 

一.图书推荐

二.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现?

三.什么是插入排序?用代码如何实现?

四.什么是冒泡排序?用代码如何实现?

五.什么是斐波那契数列?用代码如何实现?


 

一.图书推荐(评论区随机抽奖,送书呦)

今天给大家推荐一本《uni-app跨平台开发与应用从入门到实践》

        本书以“零基础”为起点,系统地介绍了uni-app的跨平台开发与应用。全书内容分为3篇,共12章,具体安排如下。

        第一篇:基础篇,包括第1~4章,主要介绍了uni-app的特点和优势、环境搭建、HBuilderX开发工具的安装和使用,以及uni-app的一些基础知识。第二篇:进阶篇,包括第5~9章,主要介绍了uni-app的基础配置、相关组件、导航栏、高效开发技巧,以及uniCloud云开发平台。第三篇:实战篇,包括第10~12章,通过第一个实战,介绍了如何使用uni-app开发小程序;通过第二个实战,介绍了如何使用uni-app进行跨平台开发;通过第三个实战,介绍了如何使用uniCloud云开发。

个人感觉:是一本很不错的书籍,适合初学者。感兴趣的点击跳转了解:《uni-app跨平台开发与应用从入门到实践 DCloud/uni-app官方认证教材》(欧阳江涛)【摘要 书评 试读】- 京东图书

279b4ee93a57419ea8c85919d7260092.jpeg

 

二.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现?

二分法查找(Binary Search)也称折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜索,直到搜索结束为止。

二分法使用的时候需要注意:二分法只适用于有序的数据,也就是说,数据必须是从小到大,或是从大到小排序的。

public class Lesson7_4 {public static void main(String[] args) {// 二分法查找int[] binaryNums = {1, 6, 15, 18, 27, 50};int findValue = 27;int binaryResult = binarySearch(binaryNums, 0, binaryNums.length - 1, findValue);System.out.println("元素第一次出现的位置(从0开始):" + binaryResult);}/*** 二分查找,返回该值第一次出现的位置(下标从 0 开始)* @param nums      查询数组* @param start     开始下标* @param end       结束下标* @param findValue 要查找的值* @return int*/private static int binarySearch(int[] nums, int start, int end, int findValue) {if (start <= end) {// 中间位置int middle = (start + end) / 2;// 中间的值int middleValue = nums[middle];if (findValue == middleValue) {// 等于中值直接返回return middle;} else if (findValue < middleValue) {// 小于中值,在中值之前的数据中查找return binarySearch(nums, start, middle - 1, findValue);} else {// 大于中值,在中值之后的数据中查找return binarySearch(nums, middle + 1, end, findValue);}}return -1;}
}

执行结果如下:

元素第一次出现的位置(从0开始):4

 

三.什么是插入排序?用代码如何实现?

插入排序(Insertion Sort)算法是指依次把当前循环的元素,通过对比插入到合适位置的排序算法。 比如,下面是一组数据使用插入排序的执行流程:

  • 初始化数据:18, 1, 6, 27, 15
  • 第一次排序:1, 18, 6, 27, 15
  • 第二次排序:1, 6, 18, 27, 15
  • 第三次排序:1, 6, 18, 27, 15
  • 第四次排序:1, 6, 15, 18, 27

插入排序算法代码实现,如下所示:

public class Lesson7_4 {public static void main(String[] args) {// 插入排序调用int[] insertNums = {18, 1, 6, 27, 15};System.out.println("排序前:" + Arrays.toString(insertNums));insertSort(insertNums);System.out.println("排序后:" + Arrays.toString(insertNums));}/*** 插入排序*/private static void insertSort(int[] nums) {int i, j, k;for (i = 1; i < nums.length; i++) {k = nums[i];j = i - 1;// 对 i 之前的数据,给当前元素找到合适的位置while (j >= 0 && k < nums[j]) {nums[j + 1] = nums[j];// j-- 继续往前寻找j--;}nums[j + 1] = k;System.out.print("第" + i + "次排序:");System.out.println(Arrays.toString(nums));}}
}

执行结果如下:

排序前:[18, 1, 6, 27, 15]
第1次排序:[1, 18, 6, 27, 15]
第2次排序:[1, 6, 18, 27, 15]
第3次排序:[1, 6, 18, 27, 15]
第4次排序:[1, 6, 15, 18, 27]
排序后:[1, 6, 15, 18, 27]

 

四.什么是冒泡排序?用代码如何实现?

冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基础的一个,它的实现思路是通过相邻数据的交换达到排序的目的。

冒泡排序的执行流程是:

  • 对数组中相邻的数据,依次进行比较;
  • 如果前面的数据大于后面的数据,则把前面的数据交换到后面。经过一轮比较之后,就能把数组中最大的数据排到数组的最后面了;
  • 再用同样的方法,把剩下的数据逐个进行比较排序,最后得到就是从小到大排序好的数据。

冒泡排序算法代码实现,如下所示:

public class Lesson7_4 {public static void main(String[] args) {// 冒泡排序调用int[] bubbleNums = {132, 110, 122, 90, 50};System.out.println("排序前:" + Arrays.toString(bubbleNums));bubbleSort(bubbleNums);System.out.println("排序后:" + Arrays.toString(bubbleNums));}/*** 冒泡排序*/private static void bubbleSort(int[] nums) {int temp;for (int i = 1; i < nums.length; i++) {for (int j = 0; j < nums.length - i; j++) {if (nums[j] > nums[j + 1]) {temp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = temp;}}System.out.print("第" + i + "次排序:");System.out.println(Arrays.toString(nums));}}
}

执行结果如下:

排序前:[132, 110, 122, 90, 50]
第1次排序:[110, 122, 90, 50, 132]
第2次排序:[110, 90, 50, 122, 132]
第3次排序:[90, 50, 110, 122, 132]
第4次排序:[50, 90, 110, 122, 132]
排序后:[50, 90, 110, 122, 132]

五.什么是斐波那契数列?用代码如何实现?

斐波那契数列(Fibonacci Sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711...... 在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

斐波那契数列之所以又称黄金分割数列,是因为随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的数值 0.6180339887......

斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711......

斐波那契数列的特征 :第三项开始(含第三项)它的值等于前两项之和。

斐波那契数列代码实现示例,如下所示:

public class Lesson7_4 {public static void main(String[] args) {// 斐波那契数列int fibonacciIndex = 7;int fibonacciResult = fibonacci(fibonacciIndex);System.out.println("下标(从0开始)" + fibonacciIndex + "的值为:" + fibonacciResult);}/*** 斐波那契数列* @param index 斐波那契数列的下标(从0开始)* @return int*/private static int fibonacci(int index) {if (index == 0 || index == 1) {return index;} else {return fibonacci(index - 1) + fibonacci(index - 2);}}
}

执行结果如下:

下标(从0开始)7的值为:13

 

 

http://www.lryc.cn/news/42510.html

相关文章:

  • 支持RT-Thread最新版本的瑞萨RA2E1开发板终于要大展身手了
  • 【C语言进阶】 12. 假期测评①
  • 给程序加个进度条吧,1行Python代码,快速添加~
  • 常见的Keil5编译报错及其原因和解决方法
  • Django 实现瀑布流
  • 传输层协议----UDP/TCP
  • 教你如何快速在Linux中找到某个目录中最大的文件
  • Java二叉树面试题讲解
  • rancher2.6进阶之nfs动态创建pv配置
  • 快速上手vue elementUI好看的登录界面
  • Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】
  • 【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)
  • 深度学习 Day28——利用Pytorch实现好莱坞明星识别
  • Android中使用FCM进行消息推送
  • 从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理
  • Windows环境下实施域名访问的一些小知识
  • 78.qt QCustomPlot介绍
  • win32api之文件系统管理(七)
  • 点云规则格网化,且保存原始的点云索引
  • 入职第一天就被迫离职,找工作多月已读不回,面试拿不到offer我该怎么办?
  • 走进Vue【三】vue-router详解
  • html+css制作
  • Python实现rar、zip和7z文件的压缩和解压
  • 从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala
  • RocketMQ 事务消息 原理及使用方法解析
  • 为什么 ChatGPT 输出时经常会中断,需要输入“继续” 才可以继续输出?
  • PyTorch 之 基于经典网络架构训练图像分类模型
  • Scrapy的callback进入不了回调方法
  • 第二十一天 数据库开发-MySQL
  • 蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)