冒泡排序代码
冒泡排序代码
Cpp
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) { // 遍历数组直到倒数第二个元素
for (int j = 0; j < n - i - 1; j++) { // 每次遍历内部再比较并交换相邻未排序的元素
if (arr[j] > arr[j + 1]) {
// 如果当前元素大于下一个元素,则交换位置
swap(arr[j], arr[j + 1]);
}
}
}
}
// 测试函数
int main() {
int data[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(data) / sizeof(data);
bubbleSort(data, n);
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
cout << data[i] << " ";
return 0;
}
Java 冒泡排序:
Java
public class BubbleSortExample {
void bubbleSort(int arr[]) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换 arr[j+1] 和 arr[j]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void main(String args[]) {
BubbleSortExample bs = new BubbleSortExample();
int data[] = {64, 34, 25, 12, 22, 11, 90};
bs.bubbleSort(data);
System.out.println("Sorted array: ");
for (int i : data)
System.out.print(i + " ");
}
}
冒泡排序的实现逻辑如下:
对于数组中的每个元素(从第一个开始),比较它与其右侧的元素。
如果左侧的元素比右侧的大,就交换它们的位置,这样每次循环后最大的元素都会“浮”到数组的一端。
重复这个过程,但每一次遍历时都会少比较一次,因为最后已经有序的部分不再需要对比。
当所有的元素都排好序,排序结束。