c语言-C语言冒泡排序的小问题

问题描述

C语言冒泡排序的小问题

void bubblesort(intArr*ia){
int i,j,t,n=ia->cur;
for(i=n;i>2;i--)
for(j=1;j?if(ia->pt[j]>ia->pt[j-1]){
t=ia->pt[j-1];
ia->pt[j-1]=ia->pt[j];
ia->pt[j]=t;
}
上面这段是算法其中的排序部分,对长度为ia->cur的数组排序,结果似乎有点问题,结果后两位有时错位,另外结果是降序,但代码似乎是升序,各位大神给点建议

解决方案

下标j的值大于j-1时,交换。就是降序啊。你看看是不是要>=2呢

解决方案二:

C语言之冒泡排序
C语言冒泡排序
C语言_冒泡排序

时间: 2024-12-22 03:04:46

c语言-C语言冒泡排序的小问题的相关文章

c语言-C语言,简单冒泡排序排10个整数,分别按照升序降序输出,请问怎么实现?

问题描述 C语言,简单冒泡排序排10个整数,分别按照升序降序输出,请问怎么实现? C语言,简单冒泡排序排10个整数,分别按照升序降序输出,请问怎么实现? 解决方案 void foo(int * data, int n, int desc) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i; j++) { if ((data[j + 1] < data[j] && desc) || (data[j +

java 编程-java语言求助,遇到个小问题

问题描述 java语言求助,遇到个小问题 始终提示非法字符,不知道哪里错了,各位精英帮帮忙.好像是引号的问题,大家帮忙看看. 解决方案 检查一下是不是半角与全角的原因 解决方案二: 找到提示出错的行,看看那一行都有什么符号.也可以复制贴出来才好分析. 解决方案三: 编写代码时把输入法设置成英文输入法,如果你的代码不多的话,删除重新写试试. 解决方案四: 一般编译器会把有语法错误的地方标注

C语言字符串指针的一个小问题

问题描述 C语言字符串指针的一个小问题 题目如图,答案是又定义了一个指针变量做的.而我的答案编译出来结果也对,就是会运行结束之后出现一个警告对话框.不明白怎么回事,第三幅我的答案有什么问题吗?请问如果不用答案的那种编译方法,我的这种方法可不可行?能改进不报错吗? 解决方案 你的程序没有发现问题 #include <stdio.h> void fun(char * a) { int i = 0, j = 0; while (a[i] == '*') i++; for (; a[i] != '';

c语言中的冒泡排序算法

问题描述 c语言中的冒泡排序算法 直接上代码,图: #include #include #include typedef struct{ int*pt; int cur; int len; }intArr; void bubblesort(intArr*ia){ int i,j,t,n=ia->cur; for(i=n;i>2;i--) for(j=1;j if(ia->pt[j]>ia->pt[j-1]){ t=ia->pt[j-1]; ia->pt[j-1]=

c语言-C语言中的冒泡排序法(详细解说)

问题描述 C语言中的冒泡排序法(详细解说) 对输入的20个数进行排序,储存在数组中,在输入一个数,在不改变原序的情况下,输出这21个数.(麻烦各位大神解释清楚点,我还是新手!) 解决方案 C语言--冒泡排序法(详细注释) 解决方案二: 示例: #include"stdio.h" main() { int a[5],*p,i,t,j; for(i=0;i scanf("%d",&a[i]); printf(" "); for(i=0;i {

printf-c语言中阶乘的一个小问题,求解答

问题描述 c语言中阶乘的一个小问题,求解答 #include #include #include #include int main() { const int MODE=1000000; int s=0; int i,j,n; scanf("%d",&n); for(i=1;i<=n;i++) { int factorial=1; for(j=1;j<=i;j++) factorial=(factorial*j%MODE); s=(s+factorial)%MOD

c语言-C语言两个类似的小程序求教区别

问题描述 C语言两个类似的小程序求教区别 第一个程序如下:#include int a=2; int f() { static int n; int m; m=n=0; n++;a++;m++; return n+m+a; } main() { _ int k; for(k=0;k<3;k++) printf("%d,",f()); printf("n");_ } 程序运行结果: 5,6,7, 第二个程序如下: #include int a=2; int f(

win7如何更改语言 电脑语言改成英文的方法

今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).目前比较好的解决办法是:在使用电脑中越狱的时候,将电脑语言改为英文,可绕过该插件.但很多电脑小白用户还不知道如何更改电脑语言,因此本文将为大家详细介绍下电脑语言更改教程. 如何更改电脑语言 电脑语言改为英文方法 以下笔者以Windows 7系统截图演示,教大家如何更改电脑语言.其他XP或者Win8系统设置方法与此

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步