滚雪球学Java(29):数组长度和排序算法:让你的程序更高效

简介: 【5月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


前言

在上一篇文章中,我们学习了数组的常用技巧和方法。本篇文章将深入探讨数组长度以及如何使用排序算法提高程序效率。

摘要

  1. 数组长度是数组中元素的个数,可以使用 length 属性获取。
  2. 排序算法可用于将数组按升序或降序排列。
  3. 常用的排序算法有冒泡排序、选择排序和快速排序。
  4. 排序算法的效率取决于数据规模和算法实现。

Java数组

数组长度

数组长度是数组中元素的个数。在 Java 中,可以使用 length 属性获取数组的长度。

int[] arr = {
   1, 2, 3, 4, 5};
int length = arr.length; // 5

需要注意的是,数组长度是一个固定的值,一旦确定就不能更改。如果想添加或删除元素,需要创建一个新的数组。

排序算法

排序算法是对一组数据按照升序或降序排列的算法。在 Java 中,常用的排序算法有冒泡排序、选择排序和快速排序。

冒泡排序

冒泡排序是一种简单的排序算法。它的基本思想是将相邻的元素比较,如果前一个比后一个大,则交换它们的位置,直到完成整个数组的排序。

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

选择排序

选择排序是一种简单的排序算法。它的基本思想是从数组中选择最小的元素,然后将其与数组的第一个元素交换,接着在剩下的元素中选择最小的元素,然后将其与数组的第二个元素交换,以此类推,直到完成整个数组的排序。

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

快速排序

快速排序是一种常用的排序算法。它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后分别对这两部分记录继续进行快速排序,以达到整个序列有序的目的。

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);
    }
}

public static int partition(int[] arr, int left, int right) {
   
    int pivot = arr[left];
    int i = left + 1;
    int j = right;
    while (i <= j) {
   
        while (i <= j && arr[i] <= pivot) {
   
            i++;
        }
        while (i <= j && arr[j] > pivot) {
   
            j--;
        }
        if (i < j) {
   
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    int temp = arr[left];
    arr[left] = arr[j];
    arr[j] = temp;
    return j;
}

测试用例

下面是测试排序算法的代码:

int[] arr = {
   5, 3, 6, 2, 7, 1, 9, 8, 4};
System.out.println("排序前:" + Arrays.toString(arr));
bubbleSort(arr);
System.out.println("冒泡排序后:" + Arrays.toString(arr));
selectionSort(arr);
System.out.println("选择排序后:" + Arrays.toString(arr));
quickSort(arr, 0, arr.length - 1);
System.out.println("快速排序后:" + Arrays.toString(arr));

全文小结

本篇文章介绍了数组长度和排序算法的基本概念。数组长度是数组中元素的个数,可用 length 属性获取。排序算法可用于将数组按升序或降序排列,常用的排序算法有冒泡排序、选择排序和快速排序。排序算法的效率取决于数据规模和算法实现。

附录源码

  如上涉及所有源码均已上传同步在Gitee,提供给同学们一对一参考学习,辅助你更迅速的掌握。

总结

本篇文章重点介绍了数组长度和排序算法,这些都是编程中常用的基本技能。了解数组长度可以更好地处理数组操作,而排序算法则可以提高程序效率。在实际编程中,需要根据具体情况选择合适的算法,以达到更好的效果。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

目录
相关文章
|
22天前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
217 35
|
29天前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
1月前
|
存储 算法 搜索推荐
《数据之美》:Java数据结构与算法精要
本系列深入探讨数据结构与算法的核心原理及Java实现,涵盖线性与非线性结构、常用算法分类、复杂度分析及集合框架应用,助你提升程序效率,掌握编程底层逻辑。
|
1月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
295 98
|
2月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
2月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
2月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
3月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
119 2