K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

20 tháng 9 2023

tham khảo

Dãy (a)

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

Giải thích

Ban đầu

8

17

23

1

12

7

5

1

13

10

Tiếp theo so sánh a1 và a2, a2 > a2 đổi chổ a1 và a2

Sau bước 1

17

8

23

1

12

7

5

1

13

10

Tiếp theo so sánh a2 và a3, a3 > a2 đổi chổ a2 và a3

Sau bước 2

17

23

8

1

12

7

5

1

13

10

Tiếp theo so sánh a3 và a4, a3 > a4 giữ nguyên vị trí

Sau bước 3

17

23

8

1

12

7

5

1

13

10

Tiếp theo so sánh a4 và a5, a5 > a4 đổi chổ a4 và a5

Sau bước 4

17

23

8

12

1

7

5

1

13

10

Tiếp theo so sánh a5 và a6, a6 > a5 đổi chổ a5 và a6

Sau bước 5

17

23

8

12

7

1

5

1

13

10

Tiếp theo so sánh a6 và a7, a7 > a6 đổi chổ a6 và a7

Sau bước 6

17

23

8

12

7

5

1

1

13

10

Tiếp theo so sánh a7 và a8, a7 = a8 giữ nguyên vị trí

Sau bước 7

17

23

8

12

7

5

1

1

13

10

Tiếp theo so sánh a8 và a9, a9 > a8 đổi chổ a8 và a9

Sau bước 8

17

23

8

12

7

5

1

13

1

10

Tiếp theo so sánh a9 và a10, a10 > a9 đổi chổ a9 và a10

Sau bước 9

17

23

8

12

7

5

1

13

10

1

Tiếp theo ta quay lại lại bước 1và thực hiện vòng lặp tương tự.

Dãy kết quả

23

17

13

12

10

8

7

5

1

1

 
13 tháng 12 2023

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll a[]={10,2,5,12,20,6,8,15,18}; //mảng đã cho
    ll n=sizeof(a)/sizeof(a[0]); //độ dài mảng
    sort(a,a+n); //sắp xếp mảng
    //Thuật toán tìm kiếm nhị phân
    ll l=0, r=n-1;
    while(l<=r) {
        ll mid=(l+r)/2; //Tìm phần tử giữa left và right
        if(a[mid]<15) l=mid+1; //Vì từ đoạn [0,mid] thì phần tử nhỏ hơn 15 nên ta duyệt từ khoảng (mid,r]
        else r=mid-1; //vì thấy nên rút r để thu hẹp phạm vi
    }
    cout << l+1; //in ra kq (vì bắt đầu từ 0 đến n-1 nên phải tăng thêm để ra vị trí đúng)
}

(Bạn có thể dựa vào code mình để rút ra các bước)

Chúc bạn học tốt!