java编写气泡排序代码
时间: 2023-04-01 10:01:44 浏览: 144
可以的,以下是 Java 编写气泡排序的代码:
```java
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = ; i < n - 1; i++) {
for (int j = ; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
这段代码实现了气泡排序,可以对传入的整型数组进行排序。
相关问题
冒泡排序JAVA代码
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个过程就像气泡一样从底部往上升。以下是使用Java编写的一个基本冒泡排序的例子:
```java
public class BubbleSort {
void bubbleSort(int arr[]) {
int n = arr.length;
for (int i = 0; i < n-1; i++) {
// Last i elements are already in place
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// Swap arr[j+1] and arr[j]
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// Test the code
public static void main(String args[]) {
BubbleSort bs = new BubbleSort();
int arr[] = {64, 34, 25, 12, 22, 11, 90};
System.out.println("Original array:");
for (int value : arr) {
System.out.print(value + " ");
}
bs.bubbleSort(arr);
System.out.println("\nSorted array:");
for (int value : arr) {
System.out.print(value + " ");
}
}
}
```
在这个代码里,`bubbleSort`方法接受一个整型数组作为输入,并通过两层循环来进行排序。内部循环检查相邻的元素,如果它们的顺序不对就交换位置。外部循环控制整个排序过程。
查找与排序问题:在一个整型数组中(长度至少为100001,其中下标0处留作它用),随机生成待查找与排序的数据,实现起泡排序,简单选择排序,直接插入排序,二分非递归查找以及带哨兵的顺序查找算法,并完成简单计时功能(要求,java代码质量不得低于课堂上的要求)
在Java中,为了实现查找与排序问题,你可以按照以下步骤编写代码:
1. **创建数据结构**:
- 使用`ArrayList`或`Random`类来生成包含大量整数的数组。
```java
import java.util.ArrayList;
import java.util.Random;
public class ArrayUtils {
private static final int ARRAY_SIZE = 100001;
private static ArrayList<Integer> array = new ArrayList<>(ARRAY_SIZE);
private static Random random = new Random();
// 生成并填充随机整数
public static void fillArray() {
for (int i = 1; i < ARRAY_SIZE; i++) {
array.add(random.nextInt(1000)); // 随机范围设定
}
}
}
```
2. **排序算法实现**:
- 起泡排序、简单选择排序和直接插入排序可以分别通过循环和条件判断来实现。
```java
// 起泡排序
public static void bubbleSort(ArrayList<Integer> arr) {
// 简单实现略...
}
// 简单选择排序
public static void selectionSort(ArrayList<Integer> arr) {
// 简单实现略...
}
// 直接插入排序
public static void insertionSort(ArrayList<Integer> arr) {
// 简单实现略...
}
// 二分查找 (适用于已经排序的数组)
public static int binarySearch(int[] sortedArr, int target) {
int left = 0, right = sortedArr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (sortedArr[mid] == target) return mid;
else if (sortedArr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1; // 没找到目标
}
```
3. **哨兵顺序查找**:
- 这种查找是在数组末尾添加一个哨兵元素,用于简化查找过程。
```java
public static int sentinelSearch(ArrayList<Integer> arr, int target) {
arr.add(Integer.MAX_VALUE); // 添加哨兵
int index = 0;
for (int value : arr) {
if (value == target) return index;
index++;
}
return -1;
}
```
4. **计时功能**:
- 可以使用`System.nanoTime()`函数来获取当前时间点,然后比较排序前后的差值来计算运行时间。
```java
long startTime = System.nanoTime();
// 对数组进行排序
bubbleSort(array);
long endTime = System.nanoTime();
long elapsedTime = endTime - startTime;
System.out.println("Bubble Sort time: " + elapsedTime + " nanoseconds");
```
以上是一个简单的示例框架,具体的实现细节需要你自己去完善。记得在每个算法后添加相应的计时代码,并确保所有操作都在足够大的数据集上进行以反映实际性能。
阅读全文