Xét bài toán sắp xếp dãy số. Hãy cho biết khi nào ta có trường hợp thuận lợi nhất, số phép toán cần làm là ít nhất?
Cho Dãy A gồmN=8.Dãy A gồm các số nguyênlà : 9 ,11, 3, 25, 1, 18,20, 2.Hãy sử dụng thuật toán sắp xếp tráo đổi( sắp xếp dãy A thành dãy không tăng)
Cách làm: Làm theo thứ tự các bước:
1.Xác định bài toán
2.Ý tưởng
3.Thuật toán( làm 1 trong 2 cách:Liệt kê và sơ đồ khối)
4.Ápdụng làm dãy số trên theo các lần duyệt như trong sách giáo khoa
#include <bits/stdc++.h>
using namespace std;
long long a[8],n,i,j;
int main()
{
n=8;
for (i=1; i<=n; i++) cin>>a[i];
for (i=1; i<=n-1; i++)
for (j=i+1; j<=n; j++)
if (a[i]<a[j]) swap(a[i],a[j]);
for (i=1; i<=n; i++) cout<<a[i]<<" ";
return 0;
}
Mô tả thuật toán: bài toán cần khai báo những biến nào, xác định kieur dữ liệu của từng biến. VỚi bài toán sắp xếp thì ta cần biến trung gian để làm gì? Sử dụng vòng lặp for lồng nhau so sánh 2 số với nhau để sắp xếp tăng dần. Với toán Tìm Max sử dụng 1 biến Max để gán với giá trị nào ? so sánh giá trị nào? Để tìm ra số lớn nhất ? Trình bày các bước mô tả thuật toán ở dạng liệt kê hoặc sơ đồ khối?
bài 9: một siêu thị xếp 5678 lốc sữa vào các khay. Biết rằng mỗi khay chỉ xếp được nhiều nhất là 8 lốc sữa. Hỏi siêu thị cần ít nhất bao nhiêu khay để xếp đủ 5678 lốc sữa? bài toán liên quan đến phép tính có dư ________________________________________________________________________________________________________________________________________________
dùng 2 phép toán cộng, trừ và các số từ 0 đến 9. Hãy sắp xếp thành một bài toán có kết quả là 100.
Cho bài toán tính tổng dãy số : S=1 + 2 + … + n. Hãy cho biết cách giải nào tốt hơn trong hai cách giải sau đây:
Cách thứ nhất: Tính cộng dồn từng số
Cách thứ hai: Vì dãy số là cấp số cộng nên ta có thể dùng công thức tính tổng cấp số cộng
\(S=\dfrac{n\left(n+1\right)}{2}\)
Trong hai cách giải trên thì cách giải thứ 2 tốt hơn. Vì thời gian thực hiện thuật toán sẽ nhanh hơn cách thứ nhất, chỉ cần 3 phép toán để tính tổng S, T(n) =3.
Lớp 6A có 35 học sinh . Sau khi chấm điểm bài kiểm tra 15 phút môn Toán , cô giáo hận xét: Đề kiểm tra có tất cả 3 bài . Trong lớp , mỗi em đều làm được ít nhất một bài , trong đó có 20 em giải được bài thứ nhất , 14 em giải được bài thứ hai . Trong lớp có 1 em được điểm 10 . Biết rằng , học sinh lớp 6A tham gia kiểm tra đầy đủ . Tìm số học sinh giải được cả bài thứ nhất và bài thứ ba . Biện luận các trường hợp có thể xảy ra
Bài giải
Mỗi hình tròn để ghi số bạn giải đúng một bài nào đó. Vì chỉ có một bạn giải đúng 3 bài nên điền số 1 vào phần chung của 3 hình tròn. Số bạn giải đúng bài I và bài II là 2 nên phần chung của hai hình tròn này mà không chung với hình tròn còn lại sẽ được ghi số 1 (vì 2 - 1 = 1). Tương tự, ta ghi được các số vào các phần còn lại.
Số học sinh lớp 4A chính là tổng các số đã điền vào các phần
13 + 5 + 1 + 1 + 4 + 8 + 0 = 32 (HS)
Nếu cần xây dựng thuật toán cho bài toán sắp xếp dãy không tăng thì sẽ khác gì so với thuật toán sắp xếp dãy không giảm . GIÚP VỚI MỌI NGƯỜI ƠI!
Hai thuật toán đó sẽ ngược nhau
Thuật toán sắp xếp bằng đổi chỗ cho dãy số A theo trật tự tăng dần dừng lại khi nào?
A. Khi M =1 và không còn sự đổi chỗ
B. Khi số lớn nhất trôi về cuối dãy
C. Khi ai > ai + 1
D. Tất cả các phương án
Mô phỏng thuật toán sắp xếp dãy số không giảm với N = 10 và dãy A : 6,1,5,3,7,8,10,7,12,4 . Hãy cho biết với lần duyệt thứ mấy để sắp xếp thành 1,3,4,5,6,7,7,8,10,12
#include <bits/stdc++.h>
using namespace std;
long long a[1000],i,n;
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
sort(a+1,a+n+1);
for (i=1; i<=n; i++) cout<<a[i]<<" ";
return 0;
}