C语言实现冒泡排序(bubble sort)

直接上代码,先写一个比较初级的冒泡排序

#include <stdio.h>

int main(void)
{
    int num[10] = {6 , 3 , 5 , 10 , 1 , 9 , 2 , 8 , 4 , 7};
    int x , y;

    for (x = 9 ; x >= 1 ; x--)
    {
        for (y = 0 ; y <= x - 1 ; y++)
        {
            if (num[y] > num[y + 1])
            {    
                int temp;            //这里是交换num[y]与num[y + 1]的值
                temp = num[y];        
                num[y] = num[y + 1];  
                num[y + 1] = temp;    
            }
            
            else
            {
                continue;
            }    
        }    
    }

    for (int k = 0 ; k <= 9 ; k++)
    {
        printf("%d\n" , num[k]);
    }

return 0;
}

代码的核心是第一个for循环,要注意到每进行一次比较,最大的数就会到达最右边,这样的话在下一次的排序中就不用再去考虑上一次已经被排好的数。

for instance, 在第一次排序(x = 9的时候),数字10被排到了最后边, 我们之后的排序里面就不用再去考虑数字10了。

同理,在完成第二轮排序之后,数字 9 被排到了倒数第二位, 我们之后的排序就不用考虑数字 910 了,以此类推。

这是终端运行结果

现在我们可以考虑一下,是不是可以将数组的大小变成任意大?(也就是说我们输入多少数字就执行所烧数字的冒泡排序?)

显然是可以的。只要将之前的代码中的 x = 9 改成 x = strlen(num) 就好啦(但是要记得加上#include <string.h>呦~)

猜你喜欢

转载自blog.csdn.net/weixin_42612337/article/details/82826889