nếu mảng đã sắp xếp trước thì tìm kiếm nhị phân,nếu chưa sắp xếp thì cứ vét cạn mà chơi
mong các huynh chỉ với
em nhập vào 5 phần tử : 1 2 3 4 5
sau do nhap vao : 5
xuat ra man hinh la tim thay 5
Type Tiếng Việt có dấu, nếu còn tiếp tục type không dấu tui sẽ xóa bài của cậu !
Đã được chỉnh sửa lần cuối bởi rox_rook : 30-10-2008 lúc 02:28 PM.
nếu mảng đã sắp xếp trước thì tìm kiếm nhị phân,nếu chưa sắp xếp thì cứ vét cạn mà chơi
Bạn nói rõ đề bài chút.Tôi mới có thể giúp bạn được.
Chúng ta sẽ là một gia đình hạnh phúc.Cố lên!Cố Lến!Cố Lên Mèo Hen!
Bạn duyệt mảng, so sánh từng giá trị của mảng với số cần tìm, nếu đúng in ra tìm thấy, dựng cờ, kết thúc vòng lặp.mong các huynh chỉ với
em nhập vào 5 phần tử : 1 2 3 4 5
sau do nhap vao : 5
xuat ra man hinh la tim thay 5
Kiểm tra cờ để biết có tìm thấy không, nếu không thấy thì in ra không tìm thấy.
*Cờ là một biến nguyên có với giá trị mặc định nào đó bạn cho là không tìm thấy thường là 0, nếu tìm thấy thì thay đổi giá trị đó thường bằng 1. Kiểm tra cờ sẽ biết tìm thấy hay chưa.
code tìm kiếm tuần tự:
C Code:
int Search(int A[], int nA, int keySearch) { int result = 0; for(int i=0; i<nA && !result; i++) { if(A[i] == keySearch) result = 1; } return result; }
code tìm kiếm theo nhị phân (mảng đã có thứ tự tăng dần)
C Code:
int Search(int A[], int nA, int keySearch) { int m,l=0,r=nA-1; while(r > l) { m = (l+r)/2; if(A[m] == keySearch) return m; // tìm thấy tại m if(A[m]>keySearch) // tìm nữa phần đầu r = m - 1; else // tìm phần cuối l = m+1; } }
mình nghĩ code để tiếc kiệm thời gian hơn nên return luôn khi gặp trùng nhauCode:int Search(int A[], int nA, int keySearch) { int result = 0; for(int i=0; i<nA && !result; i++) { if(A[i] == keySearch) result = 1; } return result; }
VD nhưvì như vậy đỡ mất công duyệt toàn bộ ( nếu có số cần tìm)for( ) { if(A[i] == keySearch)
return 1; }
return 0;