用C语言实现“冒泡排序变形”,基础编程由此开始(第二十四节)

今天这道题目呢,是大家很熟悉的冒泡排序了。

我们都知道,用冒泡排序将N个整数按从小到大排序,就是从头到尾比较相邻的两个元素,如果前面的元素大于后面的元素,就交换两个元素的位置,通过一遍排序后,则最后面的元素必定是最大的那个元素,然后用相同的方法对前面N-1个元素进行排序,得到最终结果。

这是我们之前用冒泡排序打印得到最终结果,但今天这道冒泡排序的变形呢,还多了两个要求。

分别是:1、给定整数N和K,(1<=K<N<100),在第二行中给出N个待排序的整数。

2、在一行中打印冒泡排序第K遍后的中间结果数列,数字间以空格分隔,但结尾没有空格。

梳理逻辑

冒泡排序的逻辑我们不用多讲,之前大家也都了解了。

归根结底还是对整数N和K的一个处理。

1、第一行输入整数N和K,并给定范围,那就用到一个scanf函数与条件判断语句。

2、第二行给出N个待排序的整数,用到一个for循环,与scanf函数输入数组。

3、扫描第K遍后得到中间结果数列,这才是最为复杂的地方,在for循环中,外循环只需要进行K次循环即可,最后打印出最终结果。

代码实现

//冒泡排序的变形
#include<stdio.h>
int main(){
    int N;//N个整数
    int K;//扫描K遍
    scanf("%d %d", &N,&K);//第一行给出N和K
    int Bubble[100];
    int Temp;//Temporary Variable,一个临时变量来存储元素
    int count = 0;//计数法
    if(K>=N){
        scanf("%d %d", &N,&K);//第一行重新给出N和K
    }
    if(N>100){
        scanf("%d %d", &N,&K);//第一行重新给出N和K
    }
    if(K<1){
        scanf("%d %d", &N,&K);//第一行重新给出N和K
    }
    for(int i=0; i<N;i++){
        scanf("%d",&Bubble[i]);
    }
    for(int j = 0; j < K; j++){//K次循环
        for(int i = 0; i < N-1; i++){//N-1次循环
            if(Bubble[i]>Bubble[i+1]){
                Temp = Bubble[i+1];
                Bubble[i+1] = Bubble[i];
                Bubble[i] = Temp;
            }
        }
    }
    for(int q = 0; q < N;q++){//打印最终结果
        if(count!=0){
            printf(" ");
        }
        printf("%d", Bubble[q]);
        count++;
    }
}

结果测试

总结

总的来说,冒泡排序的变形难度的确提升了点,关键还是对for循环的一个掌握程度,如果对for循环比较熟悉的话,那么只需要在for循环的基础上进行一个修改即可。

相关文章

C语言排序方法——冒泡排序详解!你学会了吗?

冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前面。举个例子,如果有6个数:9,8,5,4,2,0。第一次先将最前面的两个数9和8对调。第二次将第2个数和第3个数对调(9和5)······...

冒泡排序(冒泡排序python)

冒泡排序(Bubble Sort)是一种简单的排序算法,其基本思想是对待排序的元素从前向后依次比较相邻的两个元素,如果顺序不对则交换它们的位置,轮比较下来,最大的元素就会“冒泡”到数组的末尾重复这个过...

冒泡排序——C语言(冒泡排序c语言什么意思)

冒泡排序的图示:假设有一个数组 [5, 3, 8, 6, 2],逐步冒泡排序的过程:第一轮:比较 5 和 3,5 > 3,交换 → [3, 5, 8, 6, 2]比较 5 和 8,5 <...

基于C语言的冒泡排序法(c语言冒泡排序思路)

冒泡排序法:对数组中的n个整数类型的数据元素(a[0]~a[n-1])进行排序。void BubbleSort(int a[],int n){ int i,j,flag=1; int temp; fo...

一文透彻解析冒泡排序(冒泡排序有几种方法)

谈一谈冒泡排序看到很多人谈算法题,上来就是一段代码,你去看去吧,自己悟去吧。心塞有的题目老长时间就是不理解。。。本文分析一下啥是冒泡排序?排序就是一组数字,按照顺序排列(从小到大) ,冒泡排序是排序的...

常见的三种排序(冒泡排序、插入排序、选择排序)

冒泡排序什么是冒泡排序?百度百科解释:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要...