冒泡排序代码

冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历待排序的列表,比较每对相邻元素,若它们的顺序错误,则交换它们的位置。遍历列表的工作重复进行直到没有再需要交换,即列表已排序完成。

以下是使用不同编程语言实现的冒泡排序代码示例:

JavaScript

function bubbleSort(arr) {
  let n = arr.lengthfor (let i = 0; i < n - 1; i++) {
    let swapped = falsefor (let j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        let temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        swapped = true;
      }
    }
    // 如果一轮循环未发生交换,说明已经有序,可提前退出
    if (!swapped) break;
  }
  return arr;
}

let arr = [64, 34, 25, 12, 22, 11, 90];
console.log("排序后的数组:", bubbleSort(arr));

Python

def bubble_sort(lst):
  n = len(lst)
  for i in range(n):
    swapped = False
    for j in range(0, n - i - 1):
      if lst[j] > lst[j + 1]:
        lst[j], lst[j + 1] = lst[j + 1], lst[j]
        swapped = True
    # 如果一轮循环未发生交换,说明已经有序,可提前退出
    if not swapped:
      break
  return lst

arr = [64, 34, 25, 12, 22, 11, 90]
print("排序后的数组:", bubble_sort(arr))

C++

#include <iostream>
#include <vector>

void bubble_sort(std::vector<int>& arr) {
  int n = arr.size();
  for (int i = 0; i < n - 1; i++) {
    bool swapped = falsefor (int j = 0; j < n - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        std::swap(arr[j], arr[j + 1]);
        swapped = true;
      }
    }
    // 如果一轮循环未发生交换,说明已经有序,可提前退出
    if (!swapped) break;
  }
}

int main() {
  std::vector<int> arr = {64, 34, 25, 12, 22, 11, 90};
  bubble_sort(arr);
  for (int i : arr) {
    std::cout<< i << " ";
  }
  return 0;
}

这些代码示例展示了冒泡排序的基本实现,并包含了优化,即如果在某次遍历中没有发生交换,则提前结束排序,因为这意味着数组已经是有序的。

Top