冒泡排序错哪里了 大家帮我解释一下

作者&投稿:聂钱 (若有异议请与网页底部的电邮联系)
求、大家帮我解释JAV一段冒泡排序~

自己画图来理解,我当初也是画图理解的

int temp = arr[j];
arr[j] = arr [j+1];//
arr[j+1] = temp;//
很好理解的,就是把arr[j] , arr [j+1]的值交换位置,但是如果直接arr[j] = arr [j+1],这样的话,arr[j]的值就被覆盖了,
所以要先把arr[j]的值提出来放一边temp,再执行arr[j] = arr [j+1],这样arr[j] 就得到arr [j+1]的值了,然后把提出来的arr[j]的值temp赋值给arr[j+1],这样就完成了值得交换

两个错误,一个是 int sort(int *p,int n)你写成了 int(p,n)
另一个问题
if(p[j]>p[j+1])
{
temp=p[j+1]; //你只是把p[j+1]的值给p[j]了
p[j]=p[j+1]; // 改成 temp=p[j]; p[j]=p[j+1]; p[j+1]=temp
p[j]=temp; //这种数组交换问题,记住先变化的数要用中间变量存起来。
}
不过这是逻辑错误了
另外我是用C的,不会用c++
不过,你的头文件少了一个 后缀
#include 你写少了个 .h
另外,我是用C的,编译器说 using namespace std; 这句有问题,我没用过C++,也不太懂c++,不知道什么问题。或许在c++里面这个不是问题吧,反正我把它删了就没错误了
最后。。。问一句,你没使用 C++中的输入输出流,为什么要用头文件 #include

数组的传递不是这么传,a[N]表示的数组a的第N个元素值;
maopao(a[N]) 改成 maopao(a)


容县13113519588: 用指针冒泡排序哪错了?应该咋改?大家帮看一下. -
寸凯利复: #include #define N 3void main(){int a[N],max,i,*p,*t; /*N个数从大到小排列*/p=a;for(i=0;i<N;i++,p++)scanf("%d",p)...

容县13113519588: 冒泡法排序的C代码,帮我看下哪里错了? -
寸凯利复: #include void main(){ int a[10],i,j,temp; temp=0; for (i=0;i<10;i++) { scanf("%d", } for (i = 0; i<9; i++) { for (j=0;j...

容县13113519588: c++冒泡排序哪里有错啊~~ -
寸凯利复: temp=a[j]; a[j+1]=a[j]; a[j]=a[j+1];你的temp岂不是形如虚设?

容县13113519588: C语言冒泡排序法不知哪错了,拜托求解 -
寸凯利复: 第35行应该是a[i+1],你给写成赋值等于了

容县13113519588: 关于C语言冒泡排序的错误请帮忙指点一下
寸凯利复:这里错了:name和clas[i].name 本来就是char类型,所以不用加引号,去掉就行了. strcpy("name","clas[j].name");strcpy("clas[j].name","clas[i].name"); strcpy("clas[i].name","name");

容县13113519588: python冒泡排序法求告知哪里错了 - (:з」∠) --
寸凯利复: 冒泡排序算法的运作如下:1. 比较相邻的元素.如果第一个比第二个大,就交换他们两个.2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数.3. 针对所有的元素重复以上的步骤,除了...

容县13113519588: 请高手看看我写的冒泡排序哪里出错 -
寸凯利复: void BubbleSort(int a[],int n) { int i, j, temp; if(n > 1) { for(j = 0; j <= n - 2; j++) {for(i = n - 1; i > j; i--) { if(a[i - 1] > a[i]) { temp = a[i]; a[i] = a[i-1]; a[i-1] = temp; } } }} return; } 在你的程序基础上稍微改动一点, 注意看第二层for循环部分.

容县13113519588: c语言冒泡排序 帮我看看错哪里了
寸凯利复: 你好,对于那些回答我实在无语.for(j=0;j<5-i;i++) 楼主只是这里把j写成了i. 望仔细以后,祝愉快.

容县13113519588: c 语言 冒泡排序 怎么错了 求大神指导 (这段程序的意思就是 输入一个数n表示后面要输入的数的个 -
寸凯利复: 超出输入的数的个数范围了#include <stdio.h> int main () { int n,a[40],i1,i2,i3,c,i4,b; while (scanf("%d",&n)!=EOF) { for(i1=0;i1<n;i1++) scanf("%d",&a[i1]); for (i3=0; i3<n ;i3++) for(i2=0;i2<n-1-i3;i2++)//改这句就可以了 { if (a[i2]<a[i2+1]){ b=a[i2]; a[i2]=a[i2+1]; a[i2+1]=b ; } } for (i4=0;i4<n;i4++) printf("%d ",a[i4]); } }

容县13113519588: 冒泡排序错在哪 -
寸凯利复: int a[]={23,12,98,67,53,79};int temp=0;for(int i=0;i<a.length-1;i++){for(int j=i+1;j<a.length;j++){if(a[i]>a[j]){temp=a[j];a[j]=a[i];a[i]=temp;}}}这样就对了……for语句没有写对

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网