C中的冒泡排序
2021-07-07 07:22:24
深夜i
--
--
C
中
的
冒
泡
排
序
C中的冒泡排序以升序排列数字; 您可以将其修改为降序,也可以对字符串进行排序。 冒泡排序算法效率不高,因为它的平均情况和最坏情况的复杂度都是 O(n2)。
冒泡排序算法
- 从索引 0 开始,将元素与下一个元素进行比较(a[0] & a[1](a 是数组的名称)),如果 a[0] > a[1],则交换。 现在比较 a[1] & a[2] 并交换 a[1] > a[2]。 重复这个过程直到数组结束。 这样做之后,最大的元素出现在最后。 这整个事情被称为通行证。 在第一遍中,我们处理来自 [0,n-1] 的数组元素。
- 重复第一步,但处理数组元素 [0, n-2],因为最后一个,即 a[n-1],出现在其正确位置。 在这一步之后,最大的两个元素出现在最后。
- 重复此过程 n-1 次。
C中的冒泡排序程序
/* Bubble sort code */
#include <stdio.h>
int main()
{
int array[100], n, c, d, swap;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < n - 1; c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use '<' instead of '>' */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("Sorted list in ascending order:\n");
for (c = 0; c < n; c++)
printf("%d\n", array[c]);
return 0;
}
程序输出:
下载冒泡排序程序。
其他排序算法:C中的选择排序C中的插入排序
有许多快速排序算法,如快速排序、堆排序等。 排序简化了计算机编程中的问题解决。
C语言冒泡排序程序使用函数
#include <stdio.h>
void bubble_sort(long [], long);
int main()
{
long array[100], n, c;
printf("Enter number of elements\n");
scanf("%ld", &n);
printf("Enter %ld integers\n", n);
for (c = 0; c < n; c++)
scanf("%ld", &array[c]);
bubble_sort(array, n);
printf("Sorted list in ascending order:\n");
for (c = 0; c < n; c++)
printf("%ld\n", array[c]);
return 0;
}
void bubble_sort(long list[], long n)
{
long c, d, t;
for (c = 0 ; c < n - 1; c++) {
for (d = 0 ; d < n - c - 1; d++) {
if (list[d] > list[d+1]) {
/* Swapping */
t = list[d];
list[d] = list[d+1];
list[d+1] = t;
}
}
}
}
我们可以使用冒泡排序算法来检查数组是否已排序。 如果没有发生交换,则对数组进行排序。 我们可以将其最佳情况复杂度提高到 O(n)。
#include <stdio.h>
int is_Array_Sorted(int [], int);
int main()
{
int a[100], n, c;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", &a[c]);
if (is_Array_Sorted(a, n))
printf("The array is sorted.\n");
else
printf("The array isn't sorted.\n");
return 0;
}
int is_Array_Sorted(int a[], int n) {
int c, d, sorted = 1, t;
for (c = 0 ; c < n - 1; c++) {
for (d = 0 ; d < n - c - 1; d++) {
if (a[d] > a[d+1]) {
t = a[d];
a[d] = a[d+1];
a[d+1] = t;
return 0;
}
}
}
return 1;
}
上一篇:
idea打包java可执行jar包
下一篇:
C中的插入排序
评论区