Упорядочить массив по возрастанию - C (СИ) (70324)

Узнай цену своей работы

Формулировка задачи:

1)Вывести все элементы массива находящиеся в диапазоне между средним и наименьшим значением 2)Упорядочить выходной массив по возрастанию 3)При этом элементы из пункта 1) оставить на своих местах Буду благодарен за помощь
Дан массив из 10 элементов 1)Вывести все элементы массива находящиеся в диапазоне между средним и наименьшим значением 2)Упорядочить выходной массив по возрастанию 3)При этом элементы из пункта 1) оставить на своих местах Помогите

Решение задачи: «Упорядочить массив по возрастанию»

textual
Листинг программы
#include <stdio.h>
#include <Windows.h>
#define ARRAY_SIZE 20
#define LOW       -10
#define HIGH       10
 
void bubble_sort(int *list, int n){
    int c, d, t;
    for (c = 0; c < (n - 1); c++){
        for (d = 0; d < n - c - 1; d++){
            if (list[d] > list[d + 1]){
                t = list[d];
                list[d] = list[d + 1];
                list[d + 1] = t;
            }
        }
    }
}
 
int main() {
    
    srand(time(NULL));
    int *Arr = malloc(ARRAY_SIZE * sizeof(int));
    int i,j;
    for (i = 0; i < ARRAY_SIZE; i++) {
        Arr[i] = rand() % (HIGH + 1 - LOW) + LOW;
        printf("%3d ", Arr[i]);
    }
    int *min = &Arr[0];
    int min_index = 0;
    int *middle_element = Arr[ARRAY_SIZE / 2];
    for (i = 0; i < ARRAY_SIZE; i++) {
        if (Arr[i] < *min) {
            *min = Arr[i];
            min_index = i;
        }
    }
    printf("\n\nThe average is:%d and the minimal is:%d ", Arr[ARRAY_SIZE/2], *min);
    printf("\n");
    if (min_index < (ARRAY_SIZE / 2)) {
        printf("\nThe interval between the minimal and average\n");
        for (i = min_index; i <= ARRAY_SIZE / 2; i++) {
            printf("%d ", Arr[i]);
        }
        printf("\n\nThe sorted interval\n");
        bubble_sort(&Arr[min_index], (ARRAY_SIZE / 2 + 1 - min_index));
        for (i = min_index; i <= ARRAY_SIZE / 2; i++) {
            printf("%d ", Arr[i]);
        }
    }
    else if (min_index > (ARRAY_SIZE / 2)) {
        printf("\nThe interval between the average and minimal\n");
        for (i = ARRAY_SIZE / 2; i <= min_index; i++) {
            printf("%d ", Arr[i]);
        }
        printf("\n\nThe sorted interval\n");
        bubble_sort(&Arr[ARRAY_SIZE / 2], (min_index + 1 - ARRAY_SIZE / 2));
        for (i = ARRAY_SIZE / 2; i <= min_index; i++) {
            printf("%d ", Arr[i]);
        }
    } 
    else printf("\n\nThe middle element is minimal element\n\n");
    printf("\n");
    
 
 
    printf("\nThe result is:\n");
    for (i = 0; i < ARRAY_SIZE; i++) {
        printf("%3d ", Arr[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы