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如何获取文件编码格式

    下面是详解Java如何获取文件编码格式的完整攻略。 什么是文件编码格式? 文件编码格式是指用于存储或传输文本数据的编码方式,常见的编码方式有UTF-8、GBK、GB2312等。因为不同的编码方式会使用不同的字符集将文本编码为二进制数据,所以在读取文本文件时需要了解文件的编码方式,才能正确地将二进制数据转换为文本数据。 Java如何获取文件编码格式 第一种方法…

    Java 2023年5月19日
    00
  • 解决SpringBoot启动过后不能访问jsp页面的问题(超详细)

    解决SpringBoot启动过后不能访问jsp页面的问题(超详细) 问题描述 SpringBoot是一个高度集成化的框架,它不需要xml和配置文件即可构建Spring应用程序。然而,当我们在使用SpringBoot构建web应用程序的过程中,有时会遇到不能访问jsp页面的问题。这是因为SpringBoot默认使用thymeleaf作为模板引擎,而不是jsp。…

    Java 2023年6月15日
    00
  • 如何利用JAVA正则表达式轻松替换JSON中的大字段

    下面是如何利用Java正则表达式轻松替换JSON中的大字段的完整攻略: 什么是正则表达式 在介绍如何利用Java正则表达式替换JSON大字段之前,先来简单介绍一下正则表达式。正则表达式是一种文本模式,可以用来匹配搜索文本中的字符串。Java正则表达式是指Java语言中可用的正则表达式。在Java中,正则表达式由 java.util.regex 包提供支持。 …

    Java 2023年5月26日
    00
  • 使用SpringMVC返回json字符串的实例讲解

    我将为您讲解使用SpringMVC返回JSON字符串的实例攻略。 1. 实现步骤 SpringMVC实现返回JSON字符串的步骤大致如下: 在pom.xml文件添加依赖: <dependencies> <!– SpringMVC核心包 –> <dependency> <groupId>org.springf…

    Java 2023年6月15日
    00
  • JavaScript实现九九乘法表的简单实例

    以下是“JavaScript实现九九乘法表的简单实例”的完整攻略。 展示九九乘法表 首先,在HTML文件中创建一个表格,用于展示九九乘法表: <table> <thead> <tr> <th>&times;</th> <th>1</th> <th>2&lt…

    Java 2023年6月15日
    00
  • 流式图表拒绝增删改查之kafka核心消费逻辑下篇

    首先我们需要了解一下本篇攻略讲解的是什么。 本文的主要内容是讲解如何将Kafka的核心消费逻辑结合流式图表进行可视化呈现,进而达到更好的监控和管理分布式系统的目的。 在具体讲解之前,我们需要明确几个概念: Kafka:一个高吞吐量、分布式的消息队列系统,主要用于解决大数据流的问题。 流式图表:一种可视化数据流的工具,可以通过图形化的方式展示数据流中的数据和流…

    Java 2023年5月20日
    00
  • Java+Spring+MySql环境中安装和配置MyBatis的教程

    下面是关于“Java+Spring+MySql环境中安装和配置MyBatis的教程”的完整攻略,包含两个示例说明。 Java+Spring+MySql环境中安装和配置MyBatis的教程 MyBatis是一个开源的Java持久化框架,它可以帮助我们轻松地将Java对象映射到关系型数据库中。本文将详细介绍如何在Java+Spring+MySql环境中安装和配置…

    Java 2023年5月17日
    00
  • java处理转义字符↑ → ↓ 保存后的展示还原操作

    Java处理转义字符的攻略 在Java中,我们经常需要处理转义字符以及它们的展示还原操作。在本文中,我们将介绍一些实现这些操作的基本方法。 转义字符的定义 转义字符是一些特殊字符,它们的字符值用于表示一些难以在文本字符集中表达的含义。在Java中,有一些常见的转义字符,如“\n”表示换行,”\t”表示制表符等。这些转义字符将在字符串中使用。 转义字符的展示 …

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