Java中常见的查找算法与排序算法总结

yizhihongxing

Java中常见的查找算法与排序算法总结

在Java中,我们经常需要对数据进行查找和排序。这里我们总结了常见的查找算法和排序算法。

查找算法

1. 顺序查找

顺序查找也叫线性查找,它的思想是从数据序列的一端开始,逐个比较数据,直到找到满足条件的数据或者遍历完整个序列。

以下是Java代码示例:

public static int sequenceSearch(int[] arr, int key) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == key) {
            return i;
        }
    }
    return -1;
}

2. 二分查找

二分查找也叫折半查找,它的思想是将有序数据序列分成若干个子序列,每次取中间位置的值与查找关键字进行比较,如果中间的值比查找的值大,则在左边子序列继续查找,否则在右边子序列继续查找,直到找到满足条件的值或者查找失败。

以下是Java代码示例:

public static int binarySearch(int[] arr, int key) {
    int low = 0;
    int high = arr.length - 1;
    while (low <= high) {
        int mid = (low + high) / 2;
        int midVal = arr[mid];
        if (midVal < key) {
            low = mid + 1;
        } else if (midVal > key) {
            high = mid - 1;
        } else {
            return mid;
        }
    }
    return -1;
}

排序算法

1. 冒泡排序

冒泡排序的思想是将相邻的两个数进行比较,如果顺序不对则进行交换,每次排序都会将最大(小)值移动到最后(前面)的位置。

以下是Java代码示例:

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

2. 快速排序

快速排序的思想是以一个基准数为标准将数组分成小于和大于基准数两个子序列,对子序列分别进行递归排序,最后合并子序列得到最终结果。

以下是Java代码示例:

public static void quickSort(int[] arr, int left, int right) {
    if (left < right) {
        int partitionIndex = partition(arr, left, right);
        quickSort(arr, left, partitionIndex - 1);
        quickSort(arr, partitionIndex + 1, right);
    }
}

private static int partition(int[] arr, int left, int right) {
    int pivot = left;
    int index = pivot + 1;
    for (int i = index; i <= right; i++) {
        if (arr[i] < arr[pivot]) {
            swap(arr, i, index);
            index++;
        }
    }
    swap(arr, pivot, index - 1);
    return index - 1;
}

private static void swap(int[] arr, int i, int j) {
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

以上就是Java中常见的查找算法和排序算法的总结。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中常见的查找算法与排序算法总结 - Python技术站

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

相关文章

  • java微信小程序步数encryptedData和开放数据解密的实现

    实现微信小程序用户步数获取需要对用户进行授权获取,获取到用户授权后,可以获取到用户的加密数据,其中包括了微信小程序步数的加密数据。 但是获取到的小程序步数加密数据是按照AES-128-CBC加密方式进行加密的,所以在获取到的加密数据需要进行解密操作,并且需要借助微信开放数据文档提供的解密算法进行解密。 以下是具体的步骤说明: 1. 获取用户授权并获取加密数据…

    Java 2023年5月23日
    00
  • java网络之基于UDP的聊天程序示例解析

    下面是关于 “java网络之基于UDP的聊天程序示例解析” 的完整攻略: 一、背景介绍 在Java编程过程中,网络编程是非常重要的一部分。UDP协议是Java中常用的一种协议,其具有数据传输快、连接简单等特点,非常适合一些及时性要求不高的网络应用,比如聊天室程序等。本篇攻略就是针对基于UDP协议的聊天程序的编写,进行详细的解析。 二、程序设计思路 本程序的设…

    Java 2023年5月30日
    00
  • Spring MVC之WebApplicationContext_动力节点Java学院整理

    Spring MVC之WebApplicationContext 本篇攻略将详细讲解Spring MVC框架中的WebApplicationContext,帮助大家了解WebApplicationContext的作用、用法以及注意事项等内容。 什么是WebApplicationContext WebApplicationContext是Spring MVC框…

    Java 2023年6月16日
    00
  • 高价值Java多线程面试题分析

    高价值Java多线程面试题分析攻略 1. 多线程基础知识 在面试过程中,多线程基础知识往往是被考查的重点。这里列举一些常见的面试题: 如何创建线程? 线程的状态有哪些? 线程安全是什么? synchronized和ReentrantLock的区别? wait()和sleep()的区别? volatile关键字的作用? 对于这些问题,我们要明确掌握线程的基本概…

    Java 2023年5月19日
    00
  • SpringBoot发现最新版Druid重大问题(坑)

    SpringBoot发现最新版Druid重大问题(坑)攻略 问题描述 最近,在使用 SpringBoot 和 Druid 进行数据库连接池配置的时候,发现了一个最新版 Druid 的重大问题。具体表现就是,在使用了最新版 Druid 后,产生了以下的错误信息: 错误信息:Cannot create JDBC driver of class ‘com.mysq…

    Java 2023年6月3日
    00
  • 使用jquery-easyui的布局layout写后台管理页面的代码详解

    使用jquery-easyui的布局layout写后台管理页面的代码详解: 一、概述 在开发后台管理系统时,使用jquery-easyui的布局layout可以大幅度简化代码编写和调试过程。本文将从安装、配置、创建布局、添加面板等方面详细介绍使用jquery-easyui的布局layout进行后台管理设计的攻略。 二、安装和配置 1.引入jquery、jqu…

    Java 2023年6月15日
    00
  • Java日常练习题,每天进步一点点(5)

    下面是对于Java日常练习题系列的完整攻略。 标题 本文内容为Java日常练习题第5部分的攻略,旨在帮助Java初学者通过每天练习,逐步提高自己的编程能力。 练习题 本部分共包含5个Java练习题,涉及基本数据类型、数组、字符串等内容。每个练习题建议练习时间不超过30分钟。 提交作业 完成每个练习题后,建议将代码提交到代码托管平台(如GitHub、GitLa…

    Java 2023年5月19日
    00
  • java类加载机制、类加载器、自定义类加载器的案例

    Java类加载机制 Java的类加载机制是指将Java程序中的类(class)文件从磁盘加载到内存中,并使其能够被JVM执行的过程。Java类加载机制的目的在于实现代码的动态加载和代码的隔离,从而保证Java程序的安全性。 Java类加载机制可以分为三个部分,即类的加载、连接和初始化。其中,类的加载是指将字节码文件从文件系统或网络中读入到内存中;类的连接是指…

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