什么是冒泡排序?
冒泡排序是一种简单的排序算法,它的工作原理是比较列表中的相邻元素,如果元素不符合指定顺序,则交换它们。它是一种就地且稳定的排序算法,可以对数组和链表等数据结构中的项进行排序。
C 中的冒泡排序算法
C中使用冒泡排序对列表数据进行升序排序的算法是:
- 运行两个相互嵌套的循环。
- 外部循环将从i = 0 运行到 i < n -- 1 ,其中 n 是列表中的元素数量。
- 内部循环将从j = 0 运行到 j < n -- i -- 1 。这是因为,在外循环的每次迭代之后,末尾的一个元素(如果顺序是递减顺序,则在开头)将位于正确的位置,因此我们可以保持原样。
- 在内循环中,我们将检查arr[ j ] > arr[ j + 1 ] 是否。
- 如果这是****真的,****那么我们将交换这些元素的位置。
- 如果为false ,我们将继续下一次迭代。
- 该过程将重复进行,直到满足循环条件为止。
对于降序
- 内循环将从j = i 运行到 j < n -- 1。
- 我们将比较元素为arr[ j ] < arr[ j + 1 ]。
其他一切都会一样。
C 冒泡排序程序
cs
//实现冒泡排序的C程序
#include <stdio.h>
//实现冒泡排序的C程序
void swap(int* arr, int i, int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//冒泡排序函数
void bubbleSort(int arr[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
//最后i个元素已经存在
// 就位
for (j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1])
swap(arr, j, j + 1);
}
//打印数组的函数
void printArray(int arr[], int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
// 驱动代码
int main()
{
int arr[] = { 5, 1, 4, 2, 8 };
int N = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, N);
printf("排序数组: ");
printArray(arr, N);
return 0;
}