关于c语言一点很基础的算法问题
这里有个fun函数 int fun(int*p1,int*p2)
{
if(*p1>*p2){
int temp=*p1;
*p1=*p2;
*p2=temp;}
}就是比较大小 然后交换数值。然后下面第一个就成功 第二个就失败。 两个区别就是先后顺序不同
fun(p,p+1);
fun(p,p+2);
fun(p+1,p+2);
fun(p,p+1);
fun(p+1,p+2);
fun(p,p+2);
楼主也说了,这是交换数值的问题。你可以假设 *p = 3, *(p+1) = 2, *(p+2) =1 ,这样代入进行试一下, 你就会发现,顺序的变换对于交换数值的处理会有很大的影响。 在你第一种情况下,每次调用都进行了数值交换,但是在第二种情况下,第三句并没有执行,因为*p 已经小于*(p+2)了,所以第三个语句不会执行的。
页:
[1]