Java怎么实现读取数据文件并冒泡排序
时间: 2024-09-20 21:11:18 浏览: 33
在Java中,你可以通过FileInputStream、BufferedReader以及ArrayList等类来读取文本数据文件,并利用冒泡排序算法对数据进行排序。以下是基本步骤:
1. **打开文件**:
使用`java.io.File`和`java.nio.file.Files`创建一个`InputStream`来读取文件内容。
```java
try (FileInputStream fis = new FileInputStream("filename.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis))) {
//...
} catch (IOException e) {
e.printStackTrace();
}
```
2. **读取数据**:
逐行读取文件,将每行数据分割成整数列表(例如,假设数据是逗号分隔的)。
```java
String line;
List<Integer> numbers = new ArrayList<>();
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
for (String value : values) {
numbers.add(Integer.parseInt(value));
}
}
```
3. **冒泡排序**:
对存储的数据执行冒泡排序算法,比较相邻元素并交换它们的位置直到数组排序完成。
```java
for (int i = 0; i < numbers.size() - 1; i++) {
for (int j = 0; j < numbers.size() - 1 - i; j++) {
if (numbers.get(j) > numbers.get(j + 1)) {
int temp = numbers.get(j);
numbers.set(j, numbers.get(j + 1));
numbers.set(j + 1, temp);
}
}
}
```
4. **关闭资源**:
确保关闭输入流和缓冲读取器。
完整代码示例:
```java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("filename.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis))) {
List<Integer> numbers = new ArrayList<>();
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
for (String value : values) {
numbers.add(Integer.parseInt(value));
}
}
bubbleSort(numbers);
// 打印排序后的结果
for (Integer number : numbers) {
System.out.print(number + " ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void bubbleSort(List<Integer> numbers) {
for (int i = 0; i < numbers.size() - 1; i++) {
for (int j = 0; j < numbers.size() - 1 - i; j++) {
if (numbers.get(j) > numbers.get(j + 1)) {
Collections.swap(numbers, j, j + 1);
}
}
}
}
}
```
阅读全文