题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 交换数组中两个元素的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 将数组按照基准值进行划分
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 选择最后一个元素作为基准值
int i = (low - 1);
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
// 实现快速排序的递归函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main() {
int N;
scanf("%d", &N);
int arr[1000] = { 0 };
// 生成并打印N个随机数并存入数组arr
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
for (int j = 0; j < N; j++)
{
for (int k = j+1; k < N; k++)
{
if (arr[k] == arr[j])
{
for (int l = k; l <= N; l++)
{
arr[l] = arr[l + 1]; //若后面出现重复的值,数组项向前移动覆盖
}
N--; //数组长度减一
k--; //重复值后移一位
}
}
}
quickSort(arr, 0, N - 1);
for (int i = 0; i < N; i++) {
if (arr[i]) {
printf("%d\n", arr[i]);
}
}
return 0;
}
海康威视公司福利 1139人发布
