📅  最后修改于: 2023-12-03 15:06:56.344000             🧑  作者: Mango
循环排序是一种基于交换相邻元素的排序算法,简单易懂,同时时间复杂度为O(N^2),适用于包含 O(N) 中 1 到 N 个值的数组的排序。
遍历整个数组,对于每个元素,比较它与它后面的元素的大小,如果其后面的元素比它小,则交换这两个元素的位置。
继续往后遍历剩下的数组,重复步骤1,直到最后一个元素。
如果在数组中的一次完整遍历中没有发生任何交换,说明已经排序完成,退出循环。
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
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;
}
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 个值的数组的排序。在实际应用中,该算法的效率较低,一般使用更高效的排序算法如快速排序、堆排序等。