THUẬT TOÁN VÀ KỸ THUẬT CƠ BẢN

Một phần của tài liệu Giao trinh c++ Đại Học Công Nghệ Đồng Nai Đầy Đủ và Chuyên Sâu (Trang 153 - 156)

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)

Một phần của tài liệu Giao trinh c++ Đại Học Công Nghệ Đồng Nai Đầy Đủ và Chuyên Sâu (Trang 153 - 156)

Tải bản đầy đủ (PDF)

(156 trang)