Среди элементов массива Z (m) найти k (k « m) крупнейших - C (СИ)
Формулировка задачи:
Среди элементов массива Z (m) найти k (k « m) крупнейших. Поиск осуществить за один проход (просмотр) массива Z
Решение задачи: «Среди элементов массива Z (m) найти k (k « m) крупнейших»
textual
Листинг программы
#include <u.h> #include <libc.h> #define MAXUINT ((uint)-1) #define MAXINT (MAXUINT>>1) #define MININT (MAXINT+1) #define M 10 #define K 5 void printv(int v[], int n) { int i; for (i = 0; i < n; i++) print("%d ", v[i]); print("\n"); } void main(void) { int i, j, k, v[M], vmax[K]; srand(nsec()); for (i = 0; i < M; i++) v[i] = nrand(M); for (i = 0; i < K; i++) vmax[i] = MININT; for (i = 0; i < M; i++) { k = -1; for (j = 0; j < K; j++) if (v[i] > vmax[j]) { k = j; break; } if (k < 0) continue; for (j = K - 1; j > k; j--) vmax[j] = vmax[j-1]; vmax[k] = v[i]; } printv(v, M); printv(vmax, K); exits(0); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д