成。
随机排序
void Shuffle(int* &pData, int num, int seed) { srand(seed); int nTemp; for (int i = 0; i < num; i ++) { int j = (double) rand() / (RAND_MAX + 1) * num; nTemp = pData[j]; pData[j] = pData[i]; pData[i] = nTemp; } }
void QuickSort_1(int* &pData, int num) { int nBase = pData[0]; QuickSort_1_Recursion(pData, nBase, 0, num - 1); } bool QuickSort_1_Recursion(int* &pData, int baseDat, int nStart, int nEnd) { bool bGetMax = false; bool bGetMin = false; int oldEnd = nEnd; while(nStart < nEnd) { if (pData[nStart + 1] < baseDat) { nStart ++; } else { bGetMax = true; } if (pData[nEnd - 1] > baseDat) { nEnd --; } else { bGetMin = true; } if (bGetMax && bGetMin) { int nTemp; nTemp = pData[nStart]; pData[nStart] = pData[nEnd]; pData[nEnd] = nTemp; bGetMax = false; bGetMin = false; } } // 左边序列 if (nStart < nEnd) { QuickSort_1_Recursion(pData, pData[nStart], nStart, nEnd); } // 右边序列 if (nEnd + 1 < oldEnd) { QuickSort_1_Recursion(pData, pData[nEnd + 1], nEnd+1, oldEnd); } return true; }