【Java SE】实现冒泡排序和数组逆序

简介: 【Java SE】实现冒泡排序和数组逆序

🐳冒泡排序

给定一个数组, 让数组升序 (降序) 排序.

算法思路:

假设排升序:

1. 将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素就在数组的末尾

2. 依次从上上述过程,直到数组中所有的元素都排列好

动图如下:

代码实现:

1. import java.util.Arrays;
2. 
3. public class TestDemo {
4. public static void main(String[] args) {
5. int[] arr=new int[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
6.         bubbleSort(arr);
7.         System.out.println(Arrays.toString(arr));
8.     }
9. 
10. public static void bubbleSort(int[]arr){
11. boolean flag=false;
12. //比较的轮数
13. for (int i = 0; i < arr.length-1 ; i++) {
14. for (int j = 0; j < arr.length-i-1; j++) {//每轮比较的次数
15. if(arr[j]>arr[j+1]){
16. 
17. int temp=arr[j];
18.                         arr[j]=arr[j+1];
19.                         arr[j+1]=temp;
20.                         flag=true;
21.                     }
22.             }
23. if(flag==false){
24. break;
25.                    }
26. 
27.         }
28. 
29. 
30.     }
31. }

如果进一步优化便是当有序的时候直接跳出循环

关键在于如何理解冒泡排序,特别是每轮比较的次数是算法的关键。

🐳Java内置数组排序算法

由于冒泡排序性能较低. Java 中内置了更高效的排序算法

Arrays.sort(arr);

记得加该工具的包名。

代码实现:

1. import java.util.Arrays;
2. 
3. public class TestDemo {
4. public static void main(String[] args) {
5. int[] arr=new int[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
6.         Arrays.sort(arr);
7.         System.out.println(Arrays.toString(arr));
8.     }
9. 
10. 
11. }

🐳数组逆序:

给定一个数组, 将里面的元素逆序排列

算法思路:

设定两个下标, 分别指向第一个元素和最后一个元素. 交换两个位置的元素。

然后让前一个下标自增, 后一个下标自减, 循环继续即可。

代码实现:

1. import java.util.Arrays;
2. 
3. public class TestDemo {
4. public static void main(String[] args) {
5. int[] arr=new int[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
6.         System.out.println("逆序前:");
7.         System.out.println(Arrays.toString(arr));
8.         reverse(arr);
9.         System.out.println("逆序后:");
10.         System.out.println(Arrays.toString(arr));
11.     }
12. public static void reverse(int[]arr){
13. 
14. int left=0;//最左边下标(左指针)
15. int right= arr.length-1;//最右边下标(右指针)
16. //开始交换
17. while(left<right){//满足左指针在右指针的左侧参与循环
18. 
19. int temp=arr[left];
20.             arr[left]=arr[right];
21.             arr[right]=temp;
22.             right--;
23.             left++;
24.         }
25.     }
26. 
27. 
28. }


相关文章
|
1天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
14天前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
15天前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
34 2
|
15天前
|
Oracle Java 关系型数据库
Java(TM) Platform SE binary 已停止工作”的解决方法
Java(TM) Platform SE binary 已停止工作”的解决方法
|
6天前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
2月前
|
Java
Java数组的应用场景
Java数组的应用场景
29 1
|
2月前
|
存储 机器学习/深度学习 Java
Java数组
Java数组
27 1
|
2月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
34 0
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
|
9天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
下一篇
无影云桌面