两本教材上对于选择法上程序算法的不同,指点一下,该怎么处理

两本教材上对于选择法上程序算法的不同,指点一下
我在2本教材看到关于选择法排序的程序,仔细推敲算法后,发现了个小问题.
潭浩强   c程序设计   选择法
viod   sort(int   array[],int   n)
{
  int   i,j,k,t;
  for(i=0;i <n-1;i++)
      {
        k=i;
        for(j=i+1;j <n;j++)
            if(array[j] <array[k])k=j;
        t=array[k];
        array[k]=array[i];
        array[i]=t;
        }
}

A   First   Book   Of   ANSI   C   (FOurth   Edition)     选择法

int   selectionsort(int   num[],int   numel)
{
  int   i,j,min,minidx,temp,moves=0;               //moves   跟踪交换     minidx   索引值//
  for(i=0;i <(numel-1);i++)                              
    {
      min=num[i];
      minidx=i;
      for(j=i+1;j <numel;j++)
        {
          if(num[j] <min)
            {
              min=num[j];
              minidx=j;
              }
          }
        if(min <num[i])
          {
            temp=num[i];
            num[i]=min;
            num[minidx]=temp;
            moves++;
            }
      }
    return   moves;
}

两个程序分别为(1)和(2).
不同之处在于(2)的程序中多了一段代码
if(min <num[i])
          {
            temp=num[i];
            num[i]=min;
            num[minidx]=temp;
            moves++;
            }

现在的问题是程序(1)可以不要补上这段算法,程序检测没有问题,为什么会这样哦!!
大家指点一下..
         




------解决方案--------------------
“可以不要补上这段算法”,两段写法不同,楼主仔细看看程序执行过程

如果看不明白,就根据算法自己写一段,比较一下就清楚了
------解决方案--------------------
本质上是一样的,下面的一种把 min 就相当于 array[k] , minidx 就相当于 k
就是说,下面一种保存了两个东西,事实上,min就是 num[minidx],然后就是加了一个判断,相等时不需要交换。
------解决方案--------------------
本质还是一样的,
关键是算法,
不要只看程序~~