[Programming] Vấn đề về Thuật toán so sánh tìm kiếm |
21/08/2006 12:36:21 (+0700) | #1 | 16625 |
|
kamikazeq
Member
|
0 |
|
|
Joined: 04/07/2006 03:20:53
Messages: 837
Location: Panic Malware Planet
Offline
|
|
Ví dụ mình đang có 1 cơ sở dữ liệu bên dưới: (chứa trong EXCEL, và sử dụng Visual Basic có sẵn trong EXCEL).
Mình tạo 1 Commandbutton kèm theo đoạn Code với chức năng tìm kiếm "tên" từ dòng 3 đến dòng cuối (dòng 11 ) trong cột A. Cách thức tìm như sau:
-tìm chuỗi "công thành" và chương trình sẽ in ra họ tên và tuổi thoả điều kiện, đó là:
(Ở đây, chương trình hiểu rằng: ô họ tên phải có chứa đủ 2 từ "công" và "thành" , không cần thứ tự)
Các bác có thể chỉ dẫn thuật toán tối ưu tốc độ cho công việc tìm kiếm trên được không. Nói rõ chút chút. Thanks các bác nhiều. |
|
IDM 5.18 http://tinyurl.com/pl2ejj | Quick Remove Malware http://tinyurl.com/lbbm9x - http://tinyurl.com/arna6g |
|
|
|
[Question] Vấn đề về Thuật toán so sánh tìm kiếm |
29/08/2006 11:55:14 (+0700) | #2 | 18913 |
hellovn
Member
|
0 |
|
|
Joined: 29/06/2006 16:33:12
Messages: 13
Offline
|
|
Ủa,tui thấy là nó phải so sánh tất cả các row để so sánh mà |
|
|
|
|
[Question] Vấn đề về Thuật toán so sánh tìm kiếm |
01/09/2006 11:16:19 (+0700) | #3 | 19727 |
|
Thomas_Black
Member
|
0 |
|
|
Joined: 14/07/2006 23:59:35
Messages: 51
Offline
|
|
Bạn nên Sort lại tên, sau đó có thể dùng thuật toán chia nhị phân để tìm kiếm |
|
|
|
|
[Question] Vấn đề về Thuật toán so sánh tìm kiếm |
02/09/2006 07:00:13 (+0700) | #4 | 20037 |
|
hakuso
HVA Friend
|
Joined: 04/01/2004 13:28:06
Messages: 287
Location: làng Đo Đo
Offline
|
|
Trước mắt thuật toán tui nghĩ sẽ là vầy, và tui cũng chưa thấy nên tối ưu vào điểm nào
Bạn làm các việc sau khi nút được nhấn
1. Với chuỗi trong textbox, ta cắt (split) nó ra thành 1 mảng các chuỗi với kí tự phân cách là khoảng trắng (' '). Mục đích của việc cắt là bạn sẽ có mảng và mỗi phần tử là các từ cần tìm. Tạm gọi mảng này là mảng A
2. Bắt đầu duyệt từng record trong excel. Với mỗi record ta:
* Lấy về chuỗi "họ tên" của record đó
* Cắt chuỗi "họ tên" đó thành các từ (chứa trong mảng). Tạm gọi mảng này là mảng B
* Công việc của bạn giờ là tìm xem mảng B có chứa mảng A hay không. Chỉ cần duyệt từng phần tử của mảng A, với mỗi phần tử mảng A thì so sánh với từng phần tử của mảng B.
Khi kết thúc nếu mảng B chứa mảng A tức ô "họ tên" đó có chứa các từ nằm trong textbox rồi.
Đó là thuật toán của tui, tuy khá đơn giản nhưng tui chưa nghĩ ra điểm nào gây tốn thời gian và tài nguyên cả. Nếu có xin bạn nêu ra để tui thấy được
Thắc mắc mà tui nghĩ bạn sẽ gặp phải có lẽ là so sánh giữa 2 từ xem có bằng nhau không. |
|
Live, fight, work and study |
|
|
|
[Question] Re: Vấn đề về Thuật toán so sánh tìm kiếm |
04/09/2006 21:52:19 (+0700) | #5 | 20573 |
|
kamikazeq
Member
|
0 |
|
|
Joined: 04/07/2006 03:20:53
Messages: 837
Location: Panic Malware Planet
Offline
|
|
hellovn wrote:
Ủa,tui thấy là nó phải so sánh tất cả các row để so sánh mà
Câu nói của bạn nghe không hiểu cho lắm
Thomas_Black wrote:
Bạn nên Sort lại tên, sau đó có thể dùng thuật toán chia nhị phân để tìm kiếm
Bạn ơi, cái cột Họ và Tên không SORT được, vì ở đây mình xếp theo cột Tên đường. Ý của bạn là SORT cột Họ và Tên rồi tìm so sánh , sau đó SORT lại cột Tên đường hả. Mình không hiểu lắm
hakuso wrote:
1. Với chuỗi trong textbox, ta cắt (split) nó ra thành 1 mảng các chuỗi với kí tự phân cách là khoảng trắng (' ').
Bạn nói kỹ hơn phần này đi bạn.
Bạn biết tui cắt chuỗi như thế nào không. Tui dùng hàm MID đó (trước đó phải dò khoảng trắng tùm lum, rồi cắt ra) ==> chậm cực kỳ. ( |
|
IDM 5.18 http://tinyurl.com/pl2ejj | Quick Remove Malware http://tinyurl.com/lbbm9x - http://tinyurl.com/arna6g |
|
|
|
[Question] Re: Vấn đề về Thuật toán so sánh tìm kiếm |
07/09/2006 06:23:22 (+0700) | #6 | 21266 |
|
hakuso
HVA Friend
|
Joined: 04/01/2004 13:28:06
Messages: 287
Location: làng Đo Đo
Offline
|
|
kamikazeq wrote:
Bạn nói kỹ hơn phần này đi bạn.
Bạn biết tui cắt chuỗi như thế nào không. Tui dùng hàm MID đó (trước đó phải dò khoảng trắng tùm lum, rồi cắt ra) ==> chậm cực kỳ. (
Tức là vầy, giả sử người ta nhập vô là
nguyễn văn a
Sau đó bạn làm sao , dùng hàm nào thì dùng nhưng kết quả là bạn có 1 array với các phần tử là
arr(0)="nguyễn"
arr(1)="văn"
arr(2)="a"
Đấy chính là cắt chuỗi với kí tự cắt là ' ' :wink:
Chắc bạn dùng VBA để thực hiện rồi, tui cũng không rõ VBA xử lý chuỗi mạnh không ? Vì trong thuật toán bạn sẽ cắt chuỗi liên tục nên cần ưu tiên tốc độ |
|
Live, fight, work and study |
|
|
|
[Question] Vấn đề về Thuật toán so sánh tìm kiếm |
09/09/2006 00:45:45 (+0700) | #7 | 21819 |
|
kamikazeq
Member
|
0 |
|
|
Joined: 04/07/2006 03:20:53
Messages: 837
Location: Panic Malware Planet
Offline
|
|
Vậy có ai biết hàm Split này dùng ra sao không, cho mình ví dụ với |
|
IDM 5.18 http://tinyurl.com/pl2ejj | Quick Remove Malware http://tinyurl.com/lbbm9x - http://tinyurl.com/arna6g |
|
|
|
[Question] Re: Vấn đề về Thuật toán so sánh tìm kiếm |
09/09/2006 03:55:48 (+0700) | #8 | 21864 |
anhchangngoc
Member
|
0 |
|
|
Joined: 27/12/2005 12:10:28
Messages: 2
Offline
|
|
ví dụ: a là mảng. ta cần cắt chuổi "123456 / 456789/123789"
a=split('/');
//sau khi cắt ta được a[0]="123456 ", a[1]=" 456789",a[2]="123789"
hàm split sẽ cắt chuổi được ngăn cách bởi ký tự '/'
nếu muốn cắt chuổi được ngăn cách bởi khoảng trắng thì:
a=split(' '); |
|
|
|
|
[Question] Vấn đề về Thuật toán so sánh tìm kiếm |
15/09/2006 01:21:30 (+0700) | #9 | 23382 |
|
kamikazeq
Member
|
0 |
|
|
Joined: 04/07/2006 03:20:53
Messages: 837
Location: Panic Malware Planet
Offline
|
|
À, vậy hàm Split nó tự cho vô từng phần tử mỗi mảng được cắt phải ko.
Mình hiểu rùi, Thanks các bạn nhiều |
|
IDM 5.18 http://tinyurl.com/pl2ejj | Quick Remove Malware http://tinyurl.com/lbbm9x - http://tinyurl.com/arna6g |
|
[Question] Re: Vấn đề về Thuật toán so sánh tìm kiếm |
17/04/2007 15:44:08 (+0700) | #10 | 54230 |
sugarpirog
Member
|
0 |
|
|
Joined: 20/05/2005 19:55:59
Messages: 35
Offline
|
|
Mặc dù topic nay cũ rồi nhưng mình có thể đóng góp thêm một cách nữa là sử dụng function Fìnd trong VBA với 2 vòng lặp với 2 tiêu thức tìm kiếm là CÔNG và THÀNH. Kết quả sẽ ra khi .row giông nhau. |
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|