C语言指针选择法排序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言指针选择法排序问题相关的知识,希望对你有一定的参考价值。
这么写排序没有作用!请问哪儿不对啊? 囧……我没财富值了。
参考技术A #include<stdio.h>void swaped(int *a,int *b)
*b=(*a)+(*b);
*a=(*b)-(*a);
*b=(*b)-(*a);
void main()
int i,*p1,*p2,*k,t,a[10];
//数据输入
for(p1=a;p1<a+10;p1++) scanf("%d",p1);
//选择法排序(升序)
for (i=0,p2=a;p2<a+9,i<9;p2++,i++)
for (p1=a+i+1;p1<a+10;p1++) if(*p2>*p1) swaped(p2,p1);
//数据输出
for (p2=a;p2<a+10;p2++) printf("%d ",*p2);
printf("\\n");
参考技术B for(int i = 0; i < 10 -1; i++)
for(int x = 0; x < 10-i-1; i++)
if(a[x] > a[x+1])
temp = a[x];
a[x] = a[x+1];
a[x+1] = temp;
//冒泡排序
你的第三个循环是错的,换值要在if语句里面追问
那是选择法排序啊- -,能给写一下吗? 另外你用是什么软件啊?好像比VC++6.0好使。
参考技术C for(p1=a+i+1;p1<a+10;p1++)if(*k>*p1)
k=p1;
if(k!=a+i)
t=*k;
*k=*(a+i);
*(a+i)=t;
追问
能说下为什么要加这一句 吗? :if(k!=a+i)
另外你用的什么软件啊?我是初学者用的vc++6.0 不好用,win7的系统经常出问题。
k被变动过,k不是开始的a+i了,所以交换他们的值。
挑个自己喜欢的文本编辑器vim/emacs/sublimetext/notepad++
然后弄个win的gcc,mingw或者直接弄个codeblocks
以上是关于C语言指针选择法排序问题的主要内容,如果未能解决你的问题,请参考以下文章