求高手点拨:C语言中的“数组复原”的算法实现方法...
求高手点拨:
如果有一个数组,int a[4]={1,2,3,4}
采用对这个数组进行“双重循环交换对应元素法”,来进行“排序”,(以进行排列组合的穷举),的话:
①:int buf=0;
②:for(i=0;i<=3;i++){
③:for(j=0;j<=3;j++){
④:buf=a[i];
⑤:a[i]=a[j];
⑥:a[j]=buf;
⑦:}
⑧:}
高手,如果采取这样的方式来“排序”的话,高手,在第④->⑤行代码处,是为了进行“整个数组的排列的可能性的穷举”,
高手,有没有什么办法,能够让整个计算,在进行完“每一次的④->⑥行的"队列重排"后,能够让原数组在面对"④->⑥"所做出的改动"复原"”,(排除使用:
buf=a[i];
a[i]=a[j];
a[j]=buf;
再进行一遍“值的回赋”,这种时间复杂度代价较高的方法外。
还有什么办法?