插入排序的疑问
這個問題總是忘記,所以記錄一下。
void insertSort(int a[],int n) {int i,j,pos;for(i=1;i<n;i++){pos=a[i];for(j=i-1;j>=0&&a[j]>pos;j--)a[j+1]=a[j];a[j+1]=pos;} }疑問:為什么需要pos這個變量,i在整個內循環不是一直都沒有變過嗎?答案很簡單,i是沒有變過,但a[i]在插入排序的前移的過程中被覆蓋了,所以要保存a[i]的值.其中在a[j+1]=a[j],這個前移等式中,a[j]是要插入的地方,但當此行結束后,for循環中還執行了j--,所以后面是a[j+1]=pos,而不是a[j]=pos.
總結
- 上一篇: C++中#if,#ifdef,ifnde
- 下一篇: sscanf简单用法