Java编程:冒泡排序与选择排序实现详解
5星 · 超过95%的资源 需积分: 9 169 浏览量
更新于2024-09-13
收藏 99KB PDF 举报
"Java实现的常见排序算法,包括冒泡排序和选择排序的详细解释及代码示例。"
在编程领域,排序算法是基础且重要的数据处理技术,尤其是在Java这样的编程语言中。本文将深入探讨两种经典的排序算法:冒泡排序和选择排序。
1. 冒泡排序(Bubble Sort)
冒泡排序是一种简单的交换排序算法,其基本思想是通过重复遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经过交换慢慢“浮”到数列的顶端,就像水中的气泡最终会上浮到水面一样。
在Java中,冒泡排序的实现如下:
```java
public class Test {
public static void main(String[] args) {
int[] a = new int[]{3, 4, 1, 5, 2};
// 冒泡排序
for (int i = 0; i < a.length; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
// 检测排序结果
for (int i : a) {
System.out.println("i=" + i);
}
}
}
```
对于降序排列,只需将条件语句`if (a[i] > a[j])`改为`if (a[i] < a[j])`。
2. 选择排序(Selection Sort)
选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。具体步骤如下:
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾;
- 重复第二步,直到所有元素均排序完毕。
Java中的选择排序实现如下:
```java
public class Test {
public static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 将找到的最小元素与第一个元素交换
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
public static void main(String[] args) {
int[] a = new int[]{3, 4, 1, 5, 2};
selectionSort(a);
// 输出排序结果
for (int i : a) {
System.out.println("i=" + i);
}
}
}
```
这两种排序算法各有优缺点。冒泡排序在最佳情况(已排序)下时间复杂度为O(n),但在最坏情况下(逆序)为O(n²);选择排序无论何种情况都保持O(n²)的时间复杂度。虽然它们不是效率最高的排序算法,但对于理解和学习排序的基本概念非常有用。在实际开发中,人们通常会使用更高效的排序算法,如快速排序、归并排序或堆排序等。
2019-03-02 上传
2023-05-02 上传
166 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-03-27 上传
古沐夕阳
- 粉丝: 2
- 资源: 145
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常