mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
计数排序中计数容器重命名为 vecCount
This commit is contained in:
parent
433d20e0d9
commit
626c4952cd
|
@ -32,19 +32,19 @@ void CountSort(vector<int>& vecRaw, vector<int>& vecObj)
|
||||||
|
|
||||||
// 使用 vecRaw 的最大值 + 1 作为计数容器 countVec 的大小
|
// 使用 vecRaw 的最大值 + 1 作为计数容器 countVec 的大小
|
||||||
int vecCountLength = (*max_element(begin(vecRaw), end(vecRaw))) + 1;
|
int vecCountLength = (*max_element(begin(vecRaw), end(vecRaw))) + 1;
|
||||||
vector<int> countVec(vecCountLength, 0);
|
vector<int> vecCount(vecCountLength, 0);
|
||||||
|
|
||||||
// 统计每个键值出现的次数
|
// 统计每个键值出现的次数
|
||||||
for (int i = 0; i < vecRaw.size(); i++)
|
for (int i = 0; i < vecRaw.size(); i++)
|
||||||
countVec[vecRaw[i]]++;
|
vecCount[vecRaw[i]]++;
|
||||||
|
|
||||||
// 后面的键值出现的位置为前面所有键值出现的次数之和
|
// 后面的键值出现的位置为前面所有键值出现的次数之和
|
||||||
for (int i = 1; i < vecCountLength; i++)
|
for (int i = 1; i < vecCountLength; i++)
|
||||||
countVec[i] += countVec[i - 1];
|
vecCount[i] += vecCount[i - 1];
|
||||||
|
|
||||||
// 将键值放到目标位置
|
// 将键值放到目标位置
|
||||||
for (int i = vecRaw.size(); i > 0; i--) // 此处逆序是为了保持相同键值的稳定性
|
for (int i = vecRaw.size(); i > 0; i--) // 此处逆序是为了保持相同键值的稳定性
|
||||||
vecObj[--countVec[vecRaw[i - 1]]] = vecRaw[i - 1];
|
vecObj[--vecCount[vecRaw[i - 1]]] = vecRaw[i - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user