📜  使用循环排序对包含 O(N) 中 1 到 N 个值的数组进行排序(1)

📅  最后修改于: 2023-12-03 15:06:56.344000             🧑  作者: Mango

使用循环排序对包含 O(N) 中 1 到 N 个值的数组进行排序

循环排序是一种基于交换相邻元素的排序算法,简单易懂,同时时间复杂度为O(N^2),适用于包含 O(N) 中 1 到 N 个值的数组的排序。

算法步骤
  1. 遍历整个数组,对于每个元素,比较它与它后面的元素的大小,如果其后面的元素比它小,则交换这两个元素的位置。

  2. 继续往后遍历剩下的数组,重复步骤1,直到最后一个元素。

  3. 如果在数组中的一次完整遍历中没有发生任何交换,说明已经排序完成,退出循环。

Python 代码实现
def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(n - 1 - i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr
Java 代码实现
public static int[] bubbleSort(int[] arr){
    int len = arr.length;
    boolean swapped;
    for(int i = 0; i < len - 1; i++){
        swapped = false;
        for(int j = 0; j < len - 1 - i; j++){
            if(arr[j] > arr[j + 1]){
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;
            }
        }
        if(!swapped) break;
    }
    return arr;
}
C++ 代码实现
void bubbleSort(int arr[], int n){
    bool swapped;
    for(int i = 0; i < n - 1; i++){
        swapped = false;
        for(int j = 0; j < n - 1 - i; j++){
            if(arr[j] > arr[j + 1]){
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                swapped = true;
            }
        }
        if(!swapped) break;
    }
}
总结

循环排序是一种时间复杂度为O(N^2)的简单排序算法,适用于包含 O(N) 中 1 到 N 个值的数组的排序。在实际应用中,该算法的效率较低,一般使用更高效的排序算法如快速排序、堆排序等。