冒泡排序是一种简单的排序算法,它的工作原理是比较列表中的相邻元素,如果元素不符合指定顺序,则交换它们。它是一种就地且稳定的排序算法,可以对数组和链表等数据结构中的项进行排序。
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 冒泡排序程序
- //实现冒泡排序的C程序
- #include
-
- //实现冒泡排序的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;
- }
