Java日常练习题,每天进步一点点(7)

Java日常练习题系列是一组适合Java初学者的练习题,能够帮助Java新手提高编程水平和理解各种基础算法。对于第七篇“Java日常练习题,每天进步一点点(7)”,我会详细讲解攻略。

题目简介

本篇练习题共有5道题目,包含以下内容:
1. 实现冒泡排序
2. 编写水仙花数判断程序
3. 编写斐波那契数列的程序
4. 编写二分查找算法
5. 编写插入排序

题目解析

1. 实现冒泡排序

冒泡排序是一种简单的排序算法,时间复杂度为O(n^2)。其基本思路是:对于一个长度为n的数列,依次比较相邻的两个元素大小,交换位置,把最大的元素向后移动,直到数列末尾,就完成了一趟排序。接着进行n-1趟排序,即可完成整个排序。以下是冒泡排序的Java代码实现。

public void bubbleSort(int[] array) {
    int n = array.length;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (array[j] > array[j+1]) {
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
}

2. 编写水仙花数判断程序

水仙花数,也叫自恋数,是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。以下是水仙花数判断程序的Java代码实现。

public boolean isNarcissisticNumber(int num) {
    if (num < 100 || num > 999) {
        return false;
    }
    int sum = 0;
    int temp = num;
    while (temp != 0) {
        int digit = temp % 10;
        sum += Math.pow(digit, 3);
        temp /= 10;
    }
    return sum == num;
}

3. 编写斐波那契数列的程序

斐波那契数列是指从0和1开始,每个数字都是前两个数字之和。例如,斐波那契数列的前10项为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34。以下是斐波那契数列程序的Java代码实现。

public int[] fibonacci(int n) {
    int[] result = new int[n];
    if (n == 1) {
        result[0] = 0;
    } else if (n == 2) {
        result[0] = 0;
        result[1] = 1;
    } else {
        result[0] = 0;
        result[1] = 1;
        for (int i = 2; i < n; i++) {
            result[i] = result[i-1] + result[i-2];
        }
    }
    return result;
}

4. 编写二分查找算法

二分查找算法,也叫折半查找,是一种高效的查找算法,时间复杂度为O(log n)。基本思路是:对于一个有序数列,在每一步把查找区间缩小一半,直到找到目标元素,或者查找区间为空。以下是二分查找算法的Java代码实现。

public int binarySearch(int[] array, int target) {
    int left = 0, right = array.length-1;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (array[mid] == target) {
            return mid;
        } else if (array[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1;
}

5. 编写插入排序

插入排序是一种简单的排序算法,时间复杂度为O(n^2)。其基本思路是:对于一个长度为n的数列,从左到右进行排序。假设前i-1个元素已经排好序,将第i个元素插入到前面的有序序列中,直到整个序列有序。以下是插入排序的Java代码实现。

public void insertionSort(int[] array) {
    int n = array.length;
    for (int i = 1; i < n; i++) {
        int key = array[i];
        int j = i - 1;
        while (j >= 0 && array[j] > key) {
            array[j+1] = array[j];
            j--;
        }
        array[j+1] = key;
    }
}

示例

以下是两个题目的示例:

示例1:实现冒泡排序

int[] array = {3, 1, 5, 8, 2};
bubbleSort(array);
for (int i = 0; i < array.length; i++) {
    System.out.print(array[i] + " ");
}
// 输出结果:1 2 3 5 8

示例2:编写斐波那契数列的程序

int[] result = fibonacci(10);
for (int i = 0; i < result.length; i++) {
    System.out.print(result[i] + " ");
}
// 输出结果:0 1 1 2 3 5 8 13 21 34

以上就是本题的详细解析和示例,希望对Java初学者有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java日常练习题,每天进步一点点(7) - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java JSON转成List结构数据

    下面我将详细讲解Java中如何将JSON转成List结构数据的完整攻略。 环境准备 首先需要引入相关依赖包,可以使用Maven管理依赖,将以下代码添加到项目根目录下的pom.xml文件中: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti…

    Java 2023年5月26日
    00
  • 使用JAVA实现http通信详解

    使用JAVA实现http通信可以通过以下几个步骤完成: 步骤1:引入相关包 在实现http通信之前,需要引入相关的包,这些包中包含了实现http通信所需要的类和方法。Java中实现http通信一般使用Apache提供的HttpComponents包,该包可以通过Maven引入,如下: <dependency> <groupId>org…

    Java 2023年5月18日
    00
  • Spring Boot JDBC 连接数据库示例

    介绍一下”Spring Boot JDBC 连接数据库示例”的完整攻略。 1. 环境准备 首先,我们需要准备JDK和Maven环境。确保已安装JDK环境,可以在命令行终端中输入以下命令进行验证: java -version 验证通过后,下载和安装Maven。同样在终端中输入以下命令进行验证: mvn -v 验证通过后,环境准备工作就做完了。 2. 添加依赖 …

    Java 2023年5月19日
    00
  • Java 实现微信和支付宝支付功能

    Java 实现微信和支付宝支付功能的完整攻略 准备工作 首先需要注册微信和支付宝的开发者账号,获取相应的开发者ID和密钥。 根据官方文档下载相应的SDK包,并将其导入到项目中。 接入支付功能需要一个网站或App,需要先部署好网站或App,并申请相应的证书(微信需要HTTPS证书)。 微信支付功能的实现步骤 准备工作 在微信公众平台申请开通微信支付功能,获取w…

    Java 2023年5月20日
    00
  • ANSI,Unicode,BMP,UTF等编码概念实例讲解

    编码概念实例讲解 计算机系统需要将字符、符号、汉字等抽象的概念转化为二进制数才能进行处理。在计算机领域中,为了表示和传输文字,人们发明了多种字符编码。本文将从ANSI, Unicode, BMP, UTF等编码方案入手,详细讲解它们的概念和特点。 ANSI编码 ANSI编码也称为ASCII编码,是美国信息交换标准代码(American Standard Co…

    Java 2023年5月20日
    00
  • Java实现ATM系统超全面步骤解读建议收藏

    Java实现ATM系统超全面步骤解读 1. 前言 ATM系统是日常生活中经常使用的自助银行系统,本文将介绍如何使用Java完成ATM系统的开发。该系统主要包括用户登录、查询账户信息、存款、取款、转账等基本功能。 2. 数据库设计 在开发ATM系统之前,需要先进行数据库设计。具体步骤如下: 2.1. 创建数据库 首先需要在MySQL数据库中创建一个名为ATM的…

    Java 2023年5月19日
    00
  • Java实现快速幂算法详解

    Java实现快速幂算法详解 快速幂算法(Power Mod)可用来求解形如$a^b\%c$的表达式,其中$a$、$b$和$c$均为正整数。快速幂算法可通过将$b$的二进制分解,以分治的方式加速幂数的计算。 算法流程 将幂数$b$转化为二进制数 遍历二进制数中每一位,从高位到低位,若该位上的二进制数字为1,则将当前幂数乘上底数$a$,否则幂数不变。 将所得的幂…

    Java 2023年5月19日
    00
  • java文件上传下载功能实现代码

    Java文件上传下载是Web开发中常见的功能,实现代码一般基于Servlet或Spring MVC等框架。下面是实现Java文件上传下载功能的完整攻略,包含示例代码。 1. 文件上传 Java文件上传一般需要使用表单提交,数据由客户端通过HTTP POST请求发送到服务器。客户端可以使用HTML表单或JavaScript+FormData等方式实现。服务端接…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部