风之城的冒泡排序
#include <iostream>
void swap(int *a , int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void printArray(int arr[], int size)
{
int i;
for (i=0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
void bubbleSort(int arr[],int size)
{
int n,i;
//先两两比较,把小的排在前面,第一轮比较完毕则最大的元素排在最后面
//然后比较数组中从第0个到第n-2个元素(一共有n-1个元素)
//循环往复 最后冒泡排序结束
for(n=size-1;n>1;n--)
{
for(i=0;i<n;i++)
if(arr[i] > arr[i+1])
swap(&arr[i],&arr[i+1]);
}
}
int main()
{
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: \n");
printArray(arr, n);
return 0;
}
Worst and Average Case Time Complexity: O(n*n). Worst case occurs when array is reverse sorted.
Best Case Time Complexity: O(n). Best case occurs when array is already sorted.
Auxiliary Space: O(1)
Boundary Cases: Bubble sort takes minimum time (Order of n) when elements are already sorted.
Sorting In Place: Yes
Stable: Yes