使用冒泡排序法对 n 个数字进行排序的 C 语言程序


2022年3月15日, Learn eTutorial
1299

什么是冒泡排序算法?

在这个 C 语言程序中,你将学习冒泡排序算法是如何工作的。这个 C 语言程序使用冒泡排序将元素按正确的顺序排列。我们可以称冒泡排序为“比较排序”,因为每次遍历都会检查相邻元素对,并通过交换元素使其按正确的顺序排列。 这个过程重复进行,直到所有元素都按正确的顺序排列。

例如,'5, 1, 6, 7, 2' 是要排序的数字,

  • 在第一次遍历中,它排序 '5' 和 '1' 并进行交换。
  • 数字现在是 '1,5,6,7,2'。它检查 '5' 和 '6' 是否有序。因此不进行任何操作。
  • 现在检查 '6' 和 '7',等等。
  • 在第一次遍历结束时,元素 '5' 将位于正确的位置。

现在进行第二次遍历。并重复第一次遍历中的过程。

 冒泡排序的最佳情况是针对已经排序的列表。

冒泡排序的最坏情况复杂度是 o(n**2),其中 'n' 是列表中元素的数量。

冒泡排序算法如何在 C 语言编程中实现?

在这个 C 语言程序中,在我们获取用户输入需要排序的项数后,我们使用 `for` 循环将列表元素从用户那里添加到数组中,然后使用另一个 `for` 循环打印用户输入的列表。

现在,使用两个嵌套的“`for` 循环”将每个元素与列表中相邻的元素进行比较。如果第二个元素小于第一个元素,我们必须使用带有 `temp` 变量的交换方法来交换元素。

我们对每个元素执行此操作,直到数组完全排序。我们从外层 for 循环中取出每个元素,并将其与内层 for 循环中的所有其他元素进行比较,以使该元素在第一次遍历中处于正确的位置。现在我们在第二次遍历中从外层循环中取出下一个元素,依此类推。最后,我们打印**排序后的列表**。

算法

步骤 1: 将头文件库包含到 C 语言程序中,以使用该库中的内置函数。

步骤 2: 初始化程序中使用的变量和用于存储值的数组。

步骤 3: 使用 `printf` 和 `scanf` 函数接受用户所需的元素数量。并将其存储在一个变量中。

步骤 4: 使用 `for` 循环,通过 `scanf` 接受用户输入的元素到数组中。

步骤 5: 使用 `for` 循环,通过 `printf` 打印数组。

步骤 6: 打开嵌套的外层 For 循环,从零到数组中的项数,以检查每个元素。

步骤 7: 打开内层 For 循环,从零到**项数 - 外层循环中的数字 - 1**,以将外层循环中的每个元素与数组中未排序的元素进行比较。

步骤 8: 使用“`if`”条件检查比较的元素是否大于被比较的元素。

步骤 9: 如果是这样,使用带有临时变量的 `Swap` 技术交换元素。

步骤 10: 在 C 语言编程中使用 `printf` 和 `for` 循环打印排序后的数组。

 

C 语言源代码

                                          #include <stdio.h>
#define MAXSIZE 10

void main() 
{
    int array[MAXSIZE];                                 /* declares array and variables */
    int i, j, N, temp;
    printf("Enter the value of N\n");
    scanf("%d", & N);
    printf("Enter the elements one by one\n");               /* accept and enter the list elements into a array  */
    for (i = 0; i < N; i++)
    {
       scanf("%d", & array[I]);
    }
    printf("Input array is...\n");
    for (i = 0; i < N; i++)
    {
            printf("%d\n", array[I]);                         /* prints the sorted list */
     }
    for (i = 0 ; i < N - 1; i++)
    {
        for (j = 0 ; j < N - i - 1; j++)
        {
            if (array[j] > array[j+1])                     /* comparing the elements using nested for loop */
            {
                temp       = array[j];
                array[j]   = array[j+1];                 /* swapping the elements using temp */
                array[j+1] = temp;
            }
       }
   }
   printf("Sorted array is...\n");
   for (i = 0; i < N; i++) 
   {
        printf("%d\n", array[I]);            /* prints the sorted list */
    }
}   
                                      

输出

Enter the value of N
5

Enter the elements one by one
390
234
111
876
345

Input array is
390
234
111
876
345

Sorted array is...
111
234
345
390
876