THUẬT TOÁN VÀ KỸ THUẬT CƠ BẢN
Phần này trình bày một số thuật tốn cơ bản mà người lập trình cần nắm. Các thuật tốn này giải quyết các vấn đề thường xuyên lặp lại trong các chương trình.
-Hốn đổi giá trị 2 biến (swap)
//hốn vị a,b: sử dụng biến trung gian
int tam; tam=a; a=b; b=tam;
//hoán vị a,b: không sử dụng biến trung gian
a = a + b; b = a - b; a = a - b; //hoặc viết bằng một hàng b=(a+b)-(a=b); -Vét cạn
Kỹ thuật duyệt tồn bộ khơng gian tìm kiếm
Duyệt lần lượt từng phần tử
Thực hiện thao tác trên phần tử hiện tại
//Ví dụ int Tong=0;
for (int i=0;i<10;i++) arr[i]=0;
-Cộng dồn
Khởi tạo Tong=0
Thực hiện vét cạn tập Tong=Tong + phần tử
hiện tại
//Ví dụ int Tong=0;
for (int i=0;i<10;i++) Tong+=arr[i];
cout<<Tong;
-Nhân dồn
Khởi tạo Tich=1
Thực hiện vét cạn tập Tich = Tich * phần tử
hiện tại
//Ví dụ int Tich =0;
for (int i=0;i<10;i++) Tich *= arr[i];
-Tìm giá trị nhỏ nhất / lớn nhất trong tập
Khởi tạo Min=phần từ đầu Thực hiện vét cạn tập
if (phần tử hiện
tại<Min)
Min=P.tử hiện tại
//Ví dụ
int Min =arr[0];
for (int i=1;i<10;i++) if (arr[i]<Min) Min=arr[i] Cout <<Min;
-Tìm giá trị bằng X trong tập: trong trường hợp này nên dùng kỹ thuật cờ (flag) để chốt lại giá trị tìm thấy nhằm phân biệt với trường hợp khơng tìm thấy
Thực hiện vét cạn tập
if (phần tử hiện
tại=X) break;
//Ví dụ
for (int i=1;i<10;i++) if (arr[i]==X) break;
//sử dụng biến cờ (chốt giá trị tìm)
int flag=-1;
for (int i=1;i<10;i++) if (arr[i]==X) { flag=i; break; } If (-1 = = flag) cout<<”khong tim thay”; else
cout<<”vi tri “<<flag;
Có nhiều thuật tốn sắp xếp, học viên sẽ tiếp tục nghiên cứu ở các môn học sau của chuyên ngành. Tuy nhiên, việc nắm vững ít nhất một thuật tốn để sắp xếp là yêu cầu bắt buộc đối với môn học này. Trong nội dung mơn học này trình bày thuật tốn sắp xếp đổi chỗ trực tiếp. Đây khơng phải là thuật tốn thực thi nhanh, nhưng là một trong các thuật toán dễ hiểu.
void SapXepDoiChoTrucTiep(int a[], int N ) {
int i, j;
for (i = 0 ; i<N-1 ; i++) for (j =i+1; j < N ; j++)
if(a[j ]< a[i]) // nếu có sự sai vị trí thì đổi chỗ
Hoanvi(a[i],a[j]); }
Tài liệu tham khảo
1. Herbert Schildt, The Complete Reference C/C++, Fourth Edition, McGraw-Hill
2. Yashavant P. Kanetkar, Let Us C, Fifth Edition, BPB
Pub.
3. Steve Oualline, Practical C Programming, 3rd Edition
4. Brian W. Kernighan, Dennis M. Ritchie, The ANSI C Programming Language.
5. Brian W. Kernighan,Dennis M. Ritchie, C Programming Language (2nd Edition)
6. Greg Perry, Absolute Beginner's Guide to C (2nd Edition)