Code tìm min của mảng bị sai

Tại sao em phần min của em lại hiện số 2 thay vì 1

#include <stdio.h>
    void main(){
        int arr[] = {1, 8, 2, 7, 2};
        int l = sizeof(arr)/sizeof(arr[0]);
        int sum = 0;
        for (int i = 0; i < l; i++)
        sum += arr[i];
        printf("Average of two arrays: %d\n", (sum/l));
        for (int i = 0; i < l; i++)
        if (arr[0] < arr[i])
        arr[0] = arr[i];
        printf("Max number is: %d\n", arr[0]);
        for (int i = 0; i < l; i++)
        if (arr[i] < arr[0])
        arr[0] = arr[i];
        printf("Min number is: %d\n", arr[0]);
    }

Ai dạy bạn code như thế này vậy? Code sai logic hoàn toàn rồi.

1 Like

tốt nhất là xài sort r in ra phần tử đầu vs cuối

Giải pháp này không tốt hơn 1 vòng lặp chút nào đâu bạn. Sắp xếp mảng nhanh nhất cũng tốn O(n log n), còn chạy 1 vòng for tìm max/min chỉ mất O(n).

2 Likes

ah mình quên, mình sry bạn

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?