// Code fragment from solution to 2320 lab1 Fall 11 // C implementation with two work variables //printf("incrementing %d\n",k); kMap=map[k]; kCount=count[kMap]; iMap=binSearchLast(count,n,kCount); i=index[iMap]; count[iMap]++; // Work variables allow these four assignments to be reordered arbitrarily index[kMap]=i; index[iMap]=k; map[k]=iMap; map[i]=kMap; // Implementation in C-like language with multiway assignment //printf("incrementing %d\n",k); iMap=binSearchLast(count,n,count[map[k]]); count[iMap]++; /* Must be done simultaneously index[map[k]]=index[iMap]; index[iMap]=k; map[k]=iMap; map[index[iMap]]=map[k]; */ index[map[k]], index[iMap], map[k], map[index[iMap]] = index[iMap], k, iMap, map[k];