| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1763 人关注过本帖
标题:冒泡法排序程序,不知道哪里出了问题,求助
取消只看楼主 加入收藏
huzhidai
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-6-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
冒泡法排序程序,不知道哪里出了问题,求助
题目
将NN个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N-1N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对NN个数的排序。

本题要求对任意给定的KK(<N<N),输出扫描完第KK遍后的中间结果数列。

输入格式:

输入在第1行中给出NN和KK(1\le K<N\le 1001≤K<N≤100),在第2行中给出NN个待排序的整数,数字间以空格分隔。

输出格式:

在一行中输出冒泡排序法扫描完第KK遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。

我写的代码
程序代码:
#include<stdio.h>
void swap1(int *x, int *y)
{
    *y = *x ^ *y;
    *x = *x ^ *y;
    *y = *x ^ *y;
    
}
void bubble(int *a, int n, int k)
{
     int i = 1, j;
     while(k)
    {
        for(j = 0; j < n - i; j++)
        if(a[j] > a[j + 1])
        swap1(&a[j], &a[j + 1]);
        k -= 1;
        i += 1;
    }
    
}



int main(void)
{
    int n, k, i;
    scanf("%d %d", &n, &k);
    int a[n];
    for(i = 0; i < n; i++)
    scanf("%d", &a[i]);
    bubble(&a[0], n, k);
    for(i = 0; i < n; i++)
    printf("%d ", a[i]);
    putchar(8);
    
    
    return 0;
}


在网上找的答案都是C++的,所以没有看懂...
搜索更多相关主题的帖子: 最大的 元素 
2016-10-17 23:36
huzhidai
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-6-15
收藏
得分:0 
回复 3楼 ldsh304
哦~谢啦

c,lisp
2016-10-20 16:26
快速回复:冒泡法排序程序,不知道哪里出了问题,求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.513579 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved