c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言数组冒泡排序是怎么实现的

更新时间:2023-10-30
## 算法简介 冒泡排序是一种简单的排序算法,它通过不断交换相邻两个元素的位置,将较大的元素逐步往后移动,最终达到排序的目的。其名称“冒泡”是因为较小的元素会像气泡一样从底部“冒”到顶部。冒泡排序平均时间复杂度为O(n^2)。 ## 算法步骤 1. 比较相邻的两个元素,如果第一个比第二个大,则交换它们的位置。 2. 对每一对相邻的元素进行步骤1,直到最后一对元素。 3. 重复步骤1和步骤2,直到所有元素都被排序为止。 ## 代码示例 下面是使用C语言实现冒泡排序的代码示例: ```c #include void bubbleSort(int arr[], int n) { int i, j, temp; for(i = 0; i < n - 1; i++) { for(j = 0; j < n - i - 1; j++) { if(arr[j] > arr[j+1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } int main() { int arr[] = {5, 2, 1, 3, 9, 7, 6, 8, 4}; int n = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, n); printf("排序后的数组:"); for(int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` ## 代码解释 在上面的代码示例中,定义了一个冒泡排序函数bubbleSort,它接收一个数组arr和数组的大小n作为参数。通过两个for循环来依次比较数组中相邻的两个元素,如果需要交换它们的位置,则交换它们,并在每次比较完成后将已排序的元素排除在外。最终,经过多次比较和交换后,整个数组中的元素都会按照从小到大的顺序排列。 在main函数中,定义了一个测试数组arr,并计算出其大小n。然后调用bubbleSort函数,并输出排序后的数组。 ## 时间复杂度 在最坏情况下,冒泡排序需要进行n(n-1)/2次比较和交换,因此其时间复杂度为O(n^2)。在最好情况下,即数组已经有序,只需要进行一次比较就可以确定数组已经排好序了,此时时间复杂度为O(n)。因此,冒泡排序的时间复杂度取决于数组中元素的排列情况。