Thuật toán sắp xếp đổi chổ trực tiếp (Interchange Sort)
1. Giới thiệu bài toán sắp xếp Cho danh sách có n phần tử a0, a1,...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
Giải sử, cần viết chương trình xuất các số từ 1 đến 10. Đơn giản là sử dụng 10 câu lệnh cout<<. Nhưng cần viết chương trình xuất các số từ 1 đến 1000. Sử dụng 1000 câu lệnh cout<< thì sẽ là một pha xử lý thật “cồng kềnh”. Giải pháp là sử dụng […]
Giải sử, cần viết chương trình xuất các số từ 1 đến 10. Đơn giản là sử dụng 10 câu lệnh cout<<. Nhưng cần viết chương trình xuất các số từ 1 đến 1000. Sử dụng 1000 câu lệnh cout<< thì sẽ là một pha xử lý thật “cồng kềnh”.
Giải pháp là sử dụng cấu trúc lặp để thực hiện các công việc mang tính lặp lại khi thỏa mãn điều kiện nào đó. Có 3 lệnh lặp trong C++ là for, while, do…while. Bài này sẽ giới thiệu cách sử dụng vòng lặp do while.
do {
//code block
}while (<điều kiện lặp>);
với <điều kiện lặp> thường là biểu thức với các toán tử quan hệ, kết quả trả về là true (0) hoặc false (0).
Nguyên lý hoạt động của vòng lặp do while như sau:
Thực thi dòng lệnh trong do while trước. Sau đó, kiểm tra <điều kiện lặp>, nếu <điều kiện lặp> đúng (true) thì thực thi dòng lệnh trong do while lần nữa.
Quá trình kiểm tra <điều kiện lặp> và thực thi dòng lệnh trong do while sẽ chấm dứt cho đến khi <điều kiện lặp> sai (false). Tức là, nếu bất cứ khi nào <điều kiện lặp> sai (false) thì vòng lặp do while sẽ chấm dứt.
#include <iostream>
using namespace std;
int main()
{
int i = 1;
// do...while loop from 1 to 5
do{
cout << i << " ";
++i;
}while (i <= 5);
return 0;
}
1 2 3 4 5| Lần lặp | Biến i | Điều kiện lặp i<=5 | Thực thi |
| i=1 | Không kiểm tra | In ra 1 và tăng i lên 2 | |
| 1 | i=2 | true | In ra 2 và tăng i lên 3 |
| 2 | i=3 | true | In ra 3 và tăng i lên 4 |
| 3 | i=4 | true | In ra 4 và tăng i lên 5 |
| 4 | i=5 | true | In ra 5 và tăng i lên 6 |
| 5 | i=6 | false | Vòng lặp chấm dứt |
int a = 1, b;
do
{
b = 1;
do
{
cout<<a + b<<endl;
b = b + 2;
}while (b < 20);
a++;
}while (a < 20);
int n = 1;
do
{
cout<<n<<endl;
n--;
}while (n < 10);
n = 1;
do{
cout<<n<<endl;
}while (n < 10);
int i = 1;
do{
cout << i << " ";
++i;
}while (i <= 5) //lỗi, thiếu dấu ;
Vòng lặp do while là một biến thể của vòng lặp while với một điểm khác biệt quan trọng. Đó là những dòng lệnh của vòng lặp do while sẽ được thực thi một lần trước khi điều kiện được kiểm tra.
Xem kết quả của 2 chương trình sau để thấy rõ sự khác nhau giữa while và do while:
#include <iostream>
using namespace std;
int main()
{
int n = 1;
while (n > 10)
{
cout<<n<<endl;
n--;
}
system("pause");
}
#include <iostream>
using namespace std;
int main()
{
int n = 1;
do
{
cout<<n<<endl;
n--;
}while (n > 10);
system("pause");
}
1Các bạn cần lưu ý sự khác nhau này trước khi quyết định dùng while hoặc do while.
I agree with your point of view, your article has given me a lot of help and benefited me a lot. Thanks. Hope you continue to write such excellent articles.