mirror of
https://github.com/huihut/interview.git
synced 2025-12-18 13:04:38 +03:00
计数排序中计数容器重命名为 vecCount
This commit is contained in:
@@ -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()
|
||||||
@@ -57,6 +57,6 @@ int main()
|
|||||||
for (int i = 0; i < vecObj.size(); ++i)
|
for (int i = 0; i < vecObj.size(); ++i)
|
||||||
cout << vecObj[i] << " ";
|
cout << vecObj[i] << " ";
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user