C语言实现冒泡排序、时间复杂度和空间复杂度
/*
* 冒泡排序
* 原理:
* 遍历要排序的数列
* 将数据两两比对
* 顺序错误则交换
* 重复上述步骤
* 直到达到排序效果
*/
int main()
{
int arr[] = { 45,3,6354,45,34,6,432,5745,3423,3423 };
//个数 = 总字节数 / 单个字节数
int len = (int)sizeof(arr) / sizeof(*arr);
//冒泡排序
bubble_sort(arr, len);
}
void bubble_sort(int arr[], int len) {
int i,j,temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {//交换位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
printf("冒泡排序输出:\n");
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
}
时间复杂度:
- 外循环-内循环:O(n^2)
空间复杂度:
- 交换时临时变量所占的内存空间
- 最优:O(0)
- 最差:O(n)