原题:https://pintia.cn/problem-sets/15/problems/721
题目要求:
思路:建立一个容器储存数据然后进行排序通过遍历的方式将其输出
代码:
#include
#include
using namespace std;
void Sort(vector& v, int left, int right);
void func(vector v)
{
Sort(v, 0, v.size() - 1);
int b;
int j = 0;
for (int i = 0; i < v.size()-1; i++)
{
b = v[i];
j++;
if (b != v[i + 1])
{
cout << b << “:” << j << endl;
j = 0;
}
if (i == v.size() - 2 )
{
if (b != v[i + 1])
{
cout << v[i + 1] << “:” << “1” << endl;
}
else
{
cout << b << “:” << j + 1 << endl;
}
}
}
}
int main()
{
vector v;
int m, n, l;
scanf_s("%d", &n);
for (m = 0; m < n; m++)
{
scanf_s("%d", &l);
v.push_back(l);
}
func(v);
}
void Sort(vector& v, int left, int right)
{
int i, j;
int middle, iTemp;
i = left;
j = right;
middle = v[(left + right) / 2];
do
{
while ((v[i] < middle) && (i < right))
i++;
while ((v[j] > middle) && (j > left))
j–;
if (i <= j)
{
iTemp = v[i];
v[i] = v[j];
v[j] = iTemp;
i++;
j–;
}
} while (i <= j);
if (left < j)
Sort(v, left, j);
if (right > i)
Sort(v, i, right);
}
最开始的时候我用的是冒泡排序然后超时了,改成了快速排序就通过了。