兩個數進行數字交換

void swap(int *a,int *b)
{
  *a=*a^*b;
  *b=*a^*b;
  *a=*a^*b;

}

用該交換函數實現兩個數的交換,要注意的問題是a,b兩個數,不能

是從同一個地址上取數,不然會導致該數變爲0的;

在做Partion快速算法中一個子函數時就出現了該問題。

int partion(int a[],int p,int r)
{
   int key,i,j;
   key=a[r];
   j=p-1;
   for(i=p;i<r;i++)
   {
     if(a[i]<key)
{
  j++;
  swap(&a[i],&a[j]);
}
   }
   j++;
   swap(&a[j],&a[r]);
   return j;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章