标题:有关排序的问题
只看楼主
丁丁212121
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-10-15
结帖率:0
已结贴  问题点数:20 回复次数:7 
有关排序的问题
做了好几天都没做出来,明天就要交了,希望有人给个思路,有代码更好!!!
数据结构与算法实验题5.2 排序
★实验任务
通过交换元素位置实现排序的算法通常称为交换排序算法。如果只允许交换相邻元素的
位置,则称为相邻交换排序算法,如冒泡排序算法。
给定n 个待排成升序的整数,求出相邻交换排序算法交换元素位置的最少次数。
★数据输入
输入第一行为一个正整数n (n < =500000)
输入第二行为n 个整数,这些整数可能有相同的。
★数据输出
输出相邻交换排序算法交换元素位置的最少次数。
PS:请用__int64 来计算次数,输入输出请用scanf,printf
输入示例5
9 1 -1 5 4
输出示例
6
搜索更多相关主题的帖子: 正整数 天都 元素 
2013-10-15 16:36
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:7 
你做得什么样子了?拿出来大家帮你修改下

我行我乐
我的博客:
http://blog.yuccn. net
2013-10-15 16:52
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
得分:7 
同学你应该会写冒泡排序吧?你的题中说“求出相邻交换排序算法交换元素位置的最少次数”,就是用优化后的冒泡排序,第一个输入(例如你写的5)决定了for循环的次数。
“输入第二行为n 个整数,这些整数可能有相同的。” 冒泡是稳定排序,就是两个相同的数比较后不变位置。
冒泡是两层循环。里层循环里面有个if,在if里面弄个累加count++,如果执行了if(交换了2个数)count就加1,最后输出count就是交换的最少次数。

后面看帖子的看下我说的对不对,不对的话求正确答案,我是新手码农。

Hello World!------鑫花璐放
2013-10-15 17:24
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:7 
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
    int *p;
    int n, i;
    printf("输入整数n(n<500000):");
    scanf("%d", &n);
    p = malloc(sizeof(int)*(n+1));
    for(i = 0; i < n; i++) {
        printf("第[%d]个整数:", i+1);
        scanf("\n%d", &p[i]);
    }
    printf("排序次数[%d]\n", sort(p, n) );
    return 0;
}
int sort(int *p, int n) {
    int tmp, i, j, cnt=0;
    for(j=0; j< n;j++) {
        for(i = 0; i < n-j-1; i++) {
            if (p[i] > p[i + 1]) {
                tmp = p[i];
                p[i] = p[i + 1];
                p[i + 1]=tmp;
                cnt++;
            }
        }
    }
    return cnt;
}
楼上思路正确的,这里贴出代码。__int64没理解,就没处理了。

好好学习,天天想上
2013-10-15 19:37
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
得分:0 
回复 4楼 zhaogay
楼上犯了个小错误
sort函数在main前没声明

Hello World!------鑫花璐放
2013-10-16 21:37
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:0 
回复 5楼 西安郑鑫
编译器没有提示这个,就忽略了。

好好学习,天天想上
2013-10-17 11:28
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
得分:0 
回复 6楼 zhaogay
编译的时候没错误也应该有个警告

Hello World!------鑫花璐放
2013-10-17 17:15
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:0 
回复 7楼 西安郑鑫
这种情况要么报个错,要么没有提示的,不存在警告,警告和错误的性质还是不一样的。

好好学习,天天想上
2013-10-18 15:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-421942-1-1.html




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

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