【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. }


相关文章
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
33 4
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
40 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
95 2
|
2月前
|
机器学习/深度学习 算法 搜索推荐
让星星⭐月亮告诉你,Java冒泡排序及其时间复杂度计算
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换位置,将较小的元素逐步移至数组前端。第一轮结束后,最小值会位于首位;第二轮则将次小值置于第二位,依此类推。经过 (n-1) 轮遍历后,数组完成排序。冒泡排序的时间复杂度为 O(n²),在最优情况下(已排序数组)时间复杂度为 O(n)。示例代码展示了如何实现冒泡排序。
59 1
|
2月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
26 3
|
2月前
|
算法 Java
java冒泡排序与二分查找(详解)
java冒泡排序与二分查找(详解)
42 4
|
2月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
34 1
|
2月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
39 0
|
7天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
37 6
|
22天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
下一篇
DataWorks