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语言指针选择法排序问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言使用指针实现选择法排序。

c语言用指针写选择法排序函数

c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢

C语言中选择排序法具体是怎样的?

C语言选择排序法

C语言:用选择法对10个整数排序