STDMETHODIMP CSortArray::Sort(int length, VARIANT array,VARIANT *arr)
{
USES_CONVERSION;
SAFEARRAYBOUND pSab[1];
pSab[0].lLbound = 0;
pSab[0].cElements = length;
SAFEARRAY *pSa = SafeArrayCreate(VT_I2,1,pSab);
VARIANT* varArray;
if( array.vt==(VT_VARIANT|VT_BYREF))
varArray = array.pvarVal;
else
varArray = &array; int *pData;
SafeArrayAccessData(pSa, (void **)&pData);
SafeArrayCopy(*(varArray->pparray),&pSa);
long  Ucolnum = 0,Lcolnum = 0;
if (pSa != NULL)
{
   
          SafeArrayGetUBound(pSa,1,&Ucolnum);
          SafeArrayGetLBound(pSa,1,&Lcolnum);
    for(int i = Lcolnum,temp = 0; i < Ucolnum; i++)//这个循环是排序
   {
   int k = i;
   for(int j = i ;j < Ucolnum; j++)
   {
if (pData[k] > pData[j])
  k = j;
   }
 temp = pData[i];pData[i] = pData[k];pData[k] = temp;
   }
                  int a = pData[3]; 
   SafeArrayUnaccessData(pSa);
arr->vt = VT_ARRAY | VT_VARIANT;
arr->parray = pSa;
}
   return S_OK;
}为什么经过上面的排序之后数组中数据还是原来的样子呢?
那个排序算法我测试过了没有问题!返回a的值是个任意的数据。
怎么回事情?