首页 > 后端开发 > C++ > C 中的冒泡排序

C 中的冒泡排序

Linda Hamilton
发布: 2024-12-03 01:40:14
原创
936 人浏览过

排序是任何编程语言中我们都需要学习的必要概念。大多数排序是在涉及数字的数组上完成的,是掌握遍历和访问数组中数据的技术的垫脚石。
我们在今天的文章中要讨论的排序技术类型是冒泡排序。

冒泡排序

冒泡排序是一种简单的排序算法,如果相邻元素的顺序错误,它的工作原理是重复交换相邻元素。这种数组排序方法不适合大型数据集,因为平均和最坏情况的时间复杂度非常高。

冒泡排序算法:

  1. 冒泡排序通过多次排序来组织数组。
  2. 第一遍:最大的元素移动到最后一个位置,它的正确位置。
  3. 第二遍:第二大元素移动到倒数第二个位置,并继续进行后续遍。
  4. 每次传递时,仅处理数组中未排序的部分。
  5. 经过 k 遍后,最大的 k 个元素在最后 k 个槽位中处于正确的位置。
  6. 在每次传递期间:
    • 比较未排序部分中的相邻元素。
    • 如果较大的元素出现在较小的元素之前,则交换元素。
    • 在遍历结束时,最大的未排序元素移动到正确的位置。 重复此过程,直到整个数组排序完毕。

冒泡排序如何工作?

下面是冒泡排序的实现。如果内部循环没有引起任何交换,可以通过停止算法来优化它。

// Easy implementation of Bubble sort
#include <stdio.h>
int main(){
    int i, j, size, temp, count=0, a[100];
    //Asking the user for size of array
    printf("Enter the size of array you want to enter = \t");
    scanf("%d", &size);
    //taking the input array through loop
    for (i=0;i<size;i++){
        printf("Enter the %dth element",i);
        scanf("%d",&a[i]);
    }
    //printing the unsorted list
    printf("The list you entered is : \n");
    for (i=0;i<size;i++){
        printf("%d,\t",a[i]);
    }
    //sorting the list
    for (i = 0; i < size - 1; i++) {
        count = 1;
        for (j = 0; j < size - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                //swapping elements
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                count = 1;
            }
        }

        // If no two elements were swapped by inner loop,
        // then break
        if (count == 1)
            break;
    }
    // printing the sorted list
    printf("\nThe sorted list is : \n");
    for (i=0;i<size;i++){
        printf("%d,\t",a[i]);
    }
    return 0;

}
登录后复制

输出 :

**Bubble Sort in C

冒泡排序的复杂度分析:

时间复杂度:O(n2)
辅助空间:O(1)

冒泡排序的优点:

  • 冒泡排序很容易理解和实现。
  • 不需要任何额外的内存空间。
  • 它是一种稳定的排序算法,这意味着具有相同键值的元素在排序输出中保持其相对顺序。

冒泡排序的缺点:

  • 冒泡排序的时间复杂度为 O(n2),这使得它对于大型数据集来说非常慢。
  • 冒泡排序是一种基于比较的排序算法,这意味着它需要比较运算符来确定输入数据集中元素的相对顺序。在某些情况下它会限制算法的效率。

有任何疑问请评论!!
所有讨论都将受到赞赏:)

以上是C 中的冒泡排序的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板