0
点赞
收藏
分享

微信扫一扫

HJ3 明明的随机数 HJ03


​​HJ3 明明的随机数​​

输入的数字大小满足 1≤val≤500, 因为数据范围小而且都是整数,val作为数组下标,数组值记录出现次数,顺序输出值>0的数组下标即可。😄

#include <iostream>

int main() {
int valArr[500] = {0};
int num = 0;
int n = 0;

std::cin >> n;
while (n-- > 0) {
std::cin >> num;
valArr[num] += 1;
}
int sz = sizeof(valArr)/sizeof(valArr[0]);
for (int i = 0; i < sz; i++) {
if (valArr[i] > 0) {
std::cout << i << std::endl;
}
}

return 0;
}

用快速排序:

#include <iostream>

template <typename T>
class HJ03 {
private:
static T partition(T arr[], int low, int high) {
T pivot = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
--high;
}
arr[low] = arr[high];
while (low < high && arr[low] <= pivot) {
++low;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
public:
void qsort(T arr[], int low, int high) {
if (low >= high) {
return;
}
int pivotIndex = partition(arr, low, high);
qsort(arr, low, pivotIndex-1);
qsort(arr, pivotIndex+1, high);
}
};

int main() {
HJ03<int> q;
int arrIn[1000] = {0};
int arrOut[1000] = {0};
int n = 0, i = 0;

std::cin >> n;
if (n < 1) {
return 0;
}
for (; i < n; i++) {
std::cin >> arrIn[i];
}
// n = 4;
// arrIn[0] = 2;
// arrIn[1] = 2;
// arrIn[2] = 3;
// arrIn[3] = 1;
q.qsort(arrIn, 0, n-1);
// for (i = 0; i < n; i++) {std::cout << arrIn[i] << std::endl;}

arrOut[0] = arrIn[0];
int j = 0;
for (i = 1; i < n; i++) {
if (arrIn[i] != arrOut[j]) {
arrOut[++j] = arrIn[i];
}
}
int m = j+1;
// std::cout << "m=" << m << "\n";
for (j = 0; j < m; j++) {
std::cout << arrOut[j] << std::endl;
}

return 0;
}

举报

相关推荐

0 条评论