这其实是一个快速排序的算法,思路很简单,就是按照archivefit数组中每一列值分别排序,把archivevar中对应行也进行调整。但就是一直提示内存访问冲突,搞了好久实在解决不了,求大神帮帮忙,小弟感激不尽!!
代码如下:错误一般会出现在红色字体所标的位置
void fitness_qstor(uint f, uint begin, uint lastPart)
{
uint i=begin,j=lastPart-1;
double pivotfit,pivotvar;
int k;
pivotvar=archivevar[begin][f];
pivotfit=archivefit[begin][f];
while(i<j)
{
while(i<j && (archivefit[j][f] >= pivotfit))
j--;
for(k=0; k < maxvar; k++)
archivevar[i][k] = archivevar[j][k];
for(k=0;k<maxfun;k++)
archivefit[i][k] = archivefit[j][k];
while(i<j && (archivefit[i][f] <= pivotfit))
i++;
for(k=0; k < maxvar; k++)
archivevar[j][k] = archivevar[i][k];
for(k=0;k<maxfun;k++)
archivefit[j][k] = archivefit[i][k];
    }
for(k=0; k < maxvar; k++)
archivevar[i][k] = pivotvar;
for(k=0;k<maxfun;k++)
archivefit[i][k] = pivotfit;
  if(begin<i-1)
    fitness_qstor(f,begin,i);
  else
  if(lastPart>i+1)
fitness_qstor(f,i+1,lastPart);
  else 
  ;
}最可能的异常: 0xC0000005