题解 | 【模板】序列操作
【模板】序列操作
https://www.nowcoder.com/practice/12da4185c0bb45918cfdc3072e544069
666,一道题把所有基础全涵盖了
#include <stdio.h>
#include <stdlib.h>
void quicksort(int number[], int l, int r) {
if (l >= r) return;
int i = l, j = r;
int pivot = number[l];
while (i < j) {
while (i < j && number[j] >= pivot) j--;
while (i < j && number[i] <= pivot) i++;
if (i < j) {
int tmp = number[i];
number[i] = number[j];
number[j] = tmp;
}
}
number[l] = number[i];
number[i] = pivot;
quicksort(number, l, i - 1);
quicksort(number, i + 1, r);
}
int main() {
int q;
scanf("%d", &q);
int *number = (int *)malloc(sizeof(int) * (q + 5));
int length = 0;
for (int t = 0; t < q; t++) {
int op;
scanf("%d", &op);
if (op == 1) {
int x;
scanf("%d", &x);
number[length++] = x;
}
else if (op == 2) {
length--;
}
else if (op == 3) {
int i;
scanf("%d", &i);
printf("%d\n", number[i]);
}
else if (op == 4) {
int i, x;
scanf("%d %d", &i, &x);
for (int j = length; j > i + 1; j--) {
number[j] = number[j - 1];
}
number[i + 1] = x;
length++;
}
else if (op == 5) {
quicksort(number, 0, length - 1);
}
else if (op == 6) {
quicksort(number, 0, length - 1);
for (int l = 0, r = length - 1; l < r; l++, r--) {
int tmp = number[l];
number[l] = number[r];
number[r] = tmp;
}
}
else if (op == 7) {
printf("%d\n", length);
}
else if (op == 8) {
for (int i = 0; i < length; i++) {
printf("%d", number[i]);
if (i != length - 1) printf(" ");
}
printf("\n");
}
}
free(number);
return 0;
}