1. Trang chủ
  2. » Luận Văn - Báo Cáo

LỰA CHỌN cài đặt và sử DỤNG một CHƯƠNG TRÌNH FTP SERVER doc

42 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 1,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PHẦN II : TÌM HIỂU VỀ TRIGGER TRONG SQL SERVER .1.Khái Niệm Trigger : Một trigger là một dạng đặc biệt của thủ tục lưu trữ và nó được thực hiện tự động khi người dùng áp dụng câu lệnh sử

Trang 1

Lời nói đầu

Ngày nay, Công nghệ thông tin đã và đang trở thànhmột trong những ngành mũi nhọn Nó không chỉ bó hẹp trongphạm vi nhà trờng, viện nghiên cứu, các trung tâm máy tính

mà còn đợc ứng dụng rộng rãi trong tất cả các lĩnh vực của đờisống xã hội Có thể nói sự phát triển vợt bậc của Công nghệthông tin đã giúp con ngời hoá giải đợc rất nhiều bài toán phứctạp mà trớc đây đã tốn rất nhiều thời gian, công sức Giờ đây

nó đã trở nên đơn giản hơn, nhanh chóng hơn và đạt độchính xác cao hơn Điều này đã đánh dấu một bớc ngoặt trong

sự phát triển của tin học nói riêng cũng nh của khoa học nhânloại nói chung

Sinh viên CNTT ngày nay phải không ngừng học hỏi, cậpnhật những cái mới và biết ứng dụng những những kiến thức

đã đợc học vào thực tiễn của cuộc sống Đợt thực tập cơ sở nàychính là bớc đầu tiên đi sâu vào tìm hiểu trong nhiều lĩnhvực của công nghệ thông tin, trên cơ sở những kiến thức đã đ-

ợc học trong những năm học vừa qua

Đề tài gồm có 4 phần :

 Phần I : Lựa Chọn Cài Đặt Và Sử Dụng Một ChơngTrình FTP Server

 Phần II : Tìm Hiểu Về Trigger Trong SQL Server

 Phần III: Các Phơng Pháp Tìm Kiếm Trong

 Phần IV: Tìm Kiếm Thông Tin Trên Internet

Do thời gian và trình độ có hạn nên chắc chắn cũngkhông tránh khỏi những sai lầm, thiếu sót Kính mong đợc sự

đón nhận, ý kiến đóng góp của các thầy cô và các bạn

Chúng tôi xin chân thành cảm ơn Ths Nguyễn Thị Thanh Tâm đã tận tình giúp đỡ nhóm chúng em hoàn thành

đề tài này!

Trang 2

PHẦN I : LỰA CHỌN CÀI ĐẶT VÀ SỬ DỤNG MỘT CHƯƠNG

TRÌNH FTP SERVER

1 Giới thiệu :

FTP là chữ viết tắc của File Transfer Protocol - Giao thức truyền file FTP

là một giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy

2.Cài đặt và sử dụng chương trình CuteFTP :

Việc Upload file lên host sẽ dễ dàng nếu chỉ với một vài file bằng công cụUpload bình thường có sẵn trên host Nhưng nó không đơn giản cho chúng tanếu Upload nhiều file như một diễn đàn lên host nếu dùng công cụ bình thườngthì mất khoảng một ngày mới có thể Up lên hết các file cho một diễn đàn Nhưng đối với CuteFTP thì bạn chỉ mất khoảng 1-2 giờ up lên là cùng Ta có thể

dễ dàng download CuteFTPPro 8.0 (Dung lượng 7,86 MB) tại đâyhttp://www.cuteftp.com/downloads/cuteftppro.aspx Sau khi đã có phần mềm tatiến hành cài đặt như sau :

 Double – click và tệp tin cuteftppro.exe Ta làm theo hướng dẫn củatrình cài đặt ,Click next

Trang 3

 Sau đó chọn Yes

Trang 4

 Click next tiếp :

Trang 5

 Chờ đợi ít phút trong khi trình cài đặt đang cài đặt chương trình vào máy tính của mình

Trang 6

 Chọn Finish để kết thúc quá trình cài đặt

Sau khi cài đặt bạn thành công bạn mở chương trinh Cute FTP ( Chú ý chương trình đòi hỏi phải đăng ký ,ta có thể dễ dàng tìm được key đăng ký trên internet ).Giao diện Cute FTP như sau :

Trang 7

Chúng ta cần đăng nhập với tài khoản host của mình Sau khi đăng nhập thành công của sổ chương trình sẽ như sau :

Trang 8

bây giờ chúng ta có thể thoải Upload và Download các file hay cả Folder lên host một cách bình thường bằng cách ấn chuột phải vào Folder ở Ô bên trái Click chuột phải chọn Upload hay Ô bên trái Click chuột phải chọn Download

Ngoài ra chúng ta có thể Edit file, Đổi tên file, bằng cách Click chuột phảivào file hay cả Folder

Trang 9

PHẦN II : TÌM HIỂU VỀ TRIGGER TRONG SQL SERVER

1.Khái Niệm Trigger :

Một trigger là một dạng đặc biệt của thủ tục lưu trữ và nó được thực hiện

tự động khi người dùng áp dụng câu lệnh sửa đổi dữ liệu lên một bảng được chỉđịnh

2.Đặc Điểm Và Ý Nghĩa Của Trigger trong SQL Server :

a.Đặc Điểm :

* Một Trigger có thể làm nhiều công việc (Action) khác nhau và có thể

được kích hoạt bởi nhiều hơn một Event Ví dụ ta có thể viết một Trigger đượckích hoạt bởi bất kỳ Event nào như Update , Delete ,hay Insert và bên trongTrigger ta sẽ viết code để giải quyết cho từng trường hợp

Trang 10

* Trigger không thể được tạo ra trên Temporary hay system table

* Trigger có thể được kich hoạt một cách tự động bởi một trong các

Event Delete ,Update ,Insert mà không thể chạy manually

* Có thể áp dụng Trigger cho View

* Khi một Trigger được kích hoạt thì data mới vừa được Insert hay mới

vừa được thay đổi sẽ được chứa trong Inserted Table ,còn data mới vừa đượcDelete được chứa trong Deleted Table Đây là hai Table tạm chỉ chứa trongmemory và chỉ có giá trị bên trong Trigger mà thôi ( nghĩa là chỉ nhìn thấy vàđược Query bên trong Trigger mà thôi ) Ta có thể dùng thông tin trong hai bảngnày để so sánh Data cũ và mới hoặc kiểm tra xem Data mới thay đổi có hợp lệtrước khi commit hay rollbak

* Có hai loại Trigger : Instead of và After Loại Instead of sẽ bỏ qua

action đã kích hoạt Trigger mà thay vào đó sẽ thực hiện các dòng SQL bên trongTrigger Ví Dụ ta có một Update Trigger trên một table với câu lệnh Instead ofthì khi table được Update thay vì Update ,SQL Server sẽ thực hiện các lệnh

đã được viết sẵn bên trong Trigger Ngược lại After sẽ thực hiện các lệnh bêntrong sau khi các action tạo nên Trigger đã xảy ra rồi

b Ý nghĩa :

Các Trigger thường được sử dụng cho việc ép buộc các qui tắc làm việc

và toàn vẹn dữ liệu Tính toàn vẹn tham chiếu có thể được định nghĩa bằng cách

sử dụng ràng buộc FOREIGN KEY với câu lệnh CREATE TABLE Nếu cácràng buộc tồn tại trong bảng có sự tác động của trigger, nó được kiểm tra trướcviệc thực hiện trigger Nếu các ràng buộc bị vi phạm, trigger sẽ không thực thi

* Các Trigger được sử dụng trong những cách sau:

* Các trigger có thể thay đổi đồng loạt (cascade change) các bảng có liên

hệ trong một CSDL

* Các trigger có thể không cho phép hoặc roll back những thay đổi viphạm tính toàn vẹn tham chiếu, hủy bỏ giao tác sửa đổi dữ liệu

Trang 11

* Các trigger có thể áp đặt các giới hạn phức tạp hơn những giới hạn đượcđịnh nghĩa bằng ràng buộc CHECK Khác với ràng buộc CHECK, các trigger cóthể tham chiếu đến các cột trong các bảng khác.

* Các trigger còn có thể tìm sự khác biệt giữa các trạng thái của một bảngtrước và sau khi sữa đổi dữ liệu và lấy ra những tác động dựa trên sự khác biệtđó

3 Cơ chế hoạt động của trigger :

Khi thực hiện việc thêm mới mẫu tin vào một table, thao tác này sẽ kíchhoạt một trigger, trigger lưu trữ dữ liệu của mẫu tin vừa thêm mới vào một table

có tên là Inserted Tương tự, khi thực hiện việc xoá mẫu tin của một table, thaotác này sẽ kích hoạt một trigger, trigger lưu trữ dữ liệu của mẫu tin vừa xoá vàomột table có tên là Deleted Cấu trúc của hai bảng này hoàn toàn giống với cấutrúc của bảng dữ liệu liên quan đến trigger khi tạo ra Thật ra hai bảng này chỉtồn tại trong bộ nhớ của máy tính (RAM) được xem như là hai bảng luận lý màchúng ta có thể sử dụng trong các xử lý của trigger Chúng ta không thể thamchiếu trực tiếp trong tiện ích SQL Query Analyzer hoặc bên trong các thủ tục nộitại.Chúng ta đã đề cập đến đến cơ chế hoạt động của trigger liên quan đến 2 thaotác thêm và xoá dữ liệu Thế còn đối với thao tác sửa đổi dữ liệu (update) thì sao

? Lệnh UPDATE trong Microsoft SQL Server được xem như là sự phối hợp củahai lệnh DELETE và INSERT (xóa bỏ dữ liệu cũ và thêm vào dữ liệu mới saukhi sửa đổi) do thế mà đối với các trigger liên quan đến việc sửa đổi dữ liệu thìchúng ta có thể tham chiếu đến cả hai bảng trung gian Inserted và Deleted.Trong đó bảng Deleted sẽ chứa đựng thông tin của các dòng dữ liệu đã bị hủy bỏ– các dòng dữ liệu cũ trước khi sửa đổi, bảng Inserted sẽ chứa đựng thông tincủa các dòng dữ liệu mới vừa thêm vào – các dòng dữ liệu sau khi sửa đổi.Mộtkhái niệm quan trọng liên quan đến cơ chế hoạt động của trigger mà chúng tôimuốn đề cập ở phần này, đây là khái niệm liên quan đến phần bổ sung mới củaphiên bản SQL Server 2000, khái niệm INSTEAD OF và AFTER

Trigger loại INSTEAD OF sẽ bỏ qua hành động kích hoạt trigger (Các

Trang 12

thao tác insert, delete, update), thay vào đó nó sẽ thực hiện các câu lệnh bêntrong trigger Cần lưu ý là nó sẽ bỏ qua hành động tác động đến cơ sở dữ liệunhưng việc lưu trữ dữ liệu vào các bảng inserted (đối với thao các insert),deleted (đối với thao tác delete) vẫn được thực hiện Ví dụ : một câu lệnh updatetác động tới một table chứa trigger loại INSTEAD OF, các câu lệnh T-SQL bêntrong trigger sẽ được thi hành, nó đóng vai trò thay thế câu lệnh update Đặc tínhnày cho phép bạn chỉ định các câu lệnh xử lý phức tạp trong trigger nhằm làmtăng thêm lệnh thay đổi dữ liệu trên table.Trigger loại INSTEAD OF có thể địnhnghĩa trên đối tượng table hoặc view

Trigger loại AFTER là loại mặc định (cũng chính là loại có từ khoá khaibáo FOR), nó có vai trò như là phần bổ sung của hành động kích hoạt trigger.Các câu lệnh bên trong trigger loại này chỉ được thi hành sau khi hành động kíchhoạt đã được thực hiện rồi Cần chú ý : là các ràng buộc toàn vẹn loại mô tả sẽđược thực hiện trước, kế đó các câu lệnh bên trong trigger sẽ được thực hiệnsau Trigger loại AFTER chỉ được phép định nghĩa trên duy nhất đối tượng table(không thể định nghĩa trên view).Trên một table, nếu muốn, bạn có thể địnhnghĩa cả 2 loại trigger Nếu bạn định nghĩa cả 2 loại trigger và các constraint chomột table, thứ tự thi hành sẽ là trigger INSTEAD OF, các constraint được xử lý

và sau cùng là trigger AFTER Nếu các constraint bị vi phạm (có nghĩa là việckiểm tra ràng buộc toàn vẹn của các constraint phát hiện có vi phạm tính toànvẹn dữ liệu), các hành động của trigger INSTEAD OF sẽ được quay lui, triggerAFTER không thi hành nếu các constraint bị vi phạm hoặc nếu có một số biến

cố khác làm cho việc sửa đổi dữ liệu trên table bị lỗi

Giống như các thủ tục nội tại, trigger có thể được lồng đến 32 cấp và cóthể được kích hoạt đệ qui

4 Tạo các trigger :

Trang 13

Giả sử ta có các bảng sau :

DIEM (MaSV,MaMon,Diem)

KIEMTRA (MaSV,MaMon ,DiemCu,DiemMoi,NgaySua )

+ Bảng DIEM để lưu trữ điểm của sinh viên , gồm các trường : mã sinh viên ,mãmôn ,và điểm ;

+ Bảng KIEMTRA để lưu vết những điểm được sửa ( sử dụng lệnh update ) gồm: mã sinh viên , mã môn , điểm cũ , điểm mới và ngày sửa

Cài đặt một trigger để thực hiện việc lưu trữ vết trên như sau :

Để tạo mới một trigger, ta sử dụng câu lệnh có cú pháp như sau:

CREATE TRIGGER luuvet

ON KIEMTRA

FOR UPDATE

AS

print '*** Ket qua sau khi cap nhat ***'

SELECT * FROM KIEMTRA

Như vậy ,khi tạo ra một trigger ta phải chỉ rõ là tạo ra trigger trên Tablenào và được trigger khi nào ( Insert , Update , Delete Sau câu lệnh As là cáccâu lệnh SQL xử lý công việc )

phÇn III : c¸c ph¬ng ph¸p t×m kiÕm trong

Trang 14

I.Giới thiệu bài toán

Tìm kiếm luôn là thao tác nền móng cho rất nhiều tác vụ tính toán Tìmkiếm nghĩa là tìm một hay nhiều mẩu thông tin đã được lưu trữ Thông thường,thông tin được chia thành các mẩu tin (record), mỗi mẩu tin đều có một KHÓA(key) dùng cho việc tìm kiếm Ta sẽ luôn có một khoá cho trước giống như khoácủa các mẩu tin mà ta cần tìm Mỗi mẩu tin được tìm thấy sẽ chứa toàn bộ thôngtin để cung cấp cho một quá trình xử lý nào đó

Việc tìm kiếm được áp dụng rất đa dạng và rộng rãi Một Ngân hàng nắmgiữ tất cả thông tin của rất nhiều tài khoản khách hàng và cần tìm kiếm để kiểmtra các biến động Một hãng Bảo hiểm hay một hệ thống trợ giúp bán vé xe, vémáy bay….Việc tìm kiếm thông tin để đáp ứng việc xắp đặt ghế và các yêu cầutương tự như vậy là thực sự cần thiết

Thuật ngữ thường được dùng trong việc mô tả cấu trúc dữ liệu của việctìm kiếm là TỪ ĐIỂN và BẢNG KÝ HIỆU Một ví dụ điển hình như ta muốnxây dựng hệ thống tra từ điển Tiếng Anh chẳng hạn Ở đây, “khoá” là từ và

“mẩu tin” là diễn giải cho từ đó, mỗi mẩu tin chứa định nghĩa, cách phát âm vàcác thông tin khác BẢNG KÝ HIỆU chính là từ điển cho chương trình và cácmẩu tin chứa thông tin mô tả đối tượng được đặt tên

II Hướng giải quyết bài toán tìm kiếm:

Trong tìm kiếm chúng ta thấy có rất nhiều chương trình được dùngthường xuyên và rộng rãi Vì vậy sẽ rất có ích khi nghiên cứu chi tiết nhiềuphương pháp khác nhau

Cách tốt nhất để suy nghĩ các thuật toán tìm kiếm là đưa ra các thao táctổng quát được rút ra từ các cài đặt cụ thể, sao cho các cài đặt khác nhau có thểđược thay thế dễ dàng Các thao tác đó gồm:

- Khởi tạo cấu trúc dữ liệu (INITIALIZE)

- Tìm kiếm một hay nhiều mẩu tin có khoá đã cho (SEARCH)

Trang 15

- Chèn thêm một mẩu tin mới ( INSERT)

- Nối lại từ điển để tạo thành một từ điển lớn hơn.(JOIN)

- Sắp xếp từ điển; xuất ra tất các mẩu tin theo thứ tự được sắp xếp

(SORT)

Trong một vài trường hợp, các thao tác này được tổ hợp thành một thao

tác phức tạp hơn Ví dụ như thao tác SEARCH_INSERT (tìm kiếm và chèn).

Thao tác này thường được dùng trong các trường hợp các mẩu tin với khoá bằngnhau không được phép lưu trữ trong cấu trúc dữ liệu Trong nhiều phương pháp,mỗi lần xác định một khoá nào đó không có trong cấu trúc dữ liệu thì trạng tháicủa thủ tục tìm kiếm sẽ chứa chính xác thông tin cần thiết để chèn thêm mộtmẩu tin mới với khoá đã cho

- Một trong 5 thao tác liệt kê trên đều có những ứng dụng rất quan trọng

và một số lớn những tổ chức dữ liệu cơ sở đã được đề nghị để dùng phối hợp cácthao tác trên một cách hiệu quả Chúng ta sẽ xét cụ thể cách cài đặt của hàm cơbản SEARCH và INSERT…

III.CÁC THUẬT TOÁN TÌM KIẾM :

1.TÌM KIẾM TRONG:

1.1 Tìm kiếm tuần tự :

a.Tìm kiếm tuần tự trên mảng :

Đây là một trong những phương pháp tìm kiếm đơn giản và dễ thực hiệnnhất đặc biệt đối với các thông tin được lưu trữ kiểu mảng Tìm kiếm tuần tự làtìm kiếm và lưu trữ các mẩu tin trong một mảng, sau đó duyệt toàn bộ mảng mộtcách tuần tự Mỗi lần tìm và duyệt như vậy ta sẽ tìm thấy được một mẩu tin.Đoạn chương trình đơn giản mô tả thuật toán tìm kiếm tuần tự như sau:

Type diem = record

key, infor: integer;

end;

var A: array[1 maxN] of diem;

N: integer;

Trang 16

Đoạn mã trên xử lý các mẩu tin có các khoá (key) và “thông tin đi kèm”

có giá trị nguyên (infor) Nhiều ứng dụng cần mở rộng các chương trình để làmviệc các mẩu tin và khoá phức tạp hơn, nhưng điều này sẽ không làm thay đổinhiều các thuật toán

Ví dụ: trường Infor có thể thay đổi thành con trỏ đến một cấu trúc mẩu tinphức tạp Trường hợp như vậy, trường infor có thể có thể xem như một chỉ danhduy nhất của mẩu tin để phân biệt những mẩu tin có khoá bằng nhau Thủ tụcseqsearch có hai đối số: một là giá trị khoá (v), một là chỉ số của mảng (biến x).Chỉ số x này dùng để xử lý trường hợp nhiều mẩu tin có cùng một giá trị khoá.Bằng cách thực hiện liên tục m:= seqsearch(v, m) khởi đầu với m:= 0; chúng ta

có thể cho m lần lượt chỉ số của các mẩu tin có khoá bằng v

Trang 17

Một mẩu tin đặc biệt có khoá là khoá đang tìm được thêm vào; nó bảo đảmrằng quá trình tìm kiếm sẽ kết thúc và cũng làm đơn giản hơn phép kiểm tratrong vòng lặp Sau khi vòng lặp dừng, nếu chỉ số trả về nhỏ hơn hay bằng N thì

đó chính là chỉ số của mẩu tin tìm được Nếu ngược lại thì trong bảng đã chokhông có mẩu tin có giá trị khoá muốn tìm Kỹ thuật này giống như kỹ thuậtdùng một mẩu tin chứa giá trị khoá nhỏ nhất hay lớn nhất để làm đơn giản cácvòng lặp của các thuật toán trong các chương trình sắp xếp

Ta có thể rút ra một kết luận cho thuật toán tìm kiếm tuần tự như sau: Tìm kiếm tuần tự (cài đặt mảng) sử dụng đúng (N +1) phép so sánh cho một lầntìm kiếm không thành công và trung bình có khoảng N/2 phép toán so sánh chomột lần tìm kiếm thành công

Trường hợp tìm kiếm thành công, điều này là hiển nhiên được thấy ngaytrong đoạn chương trình trên

Trường hợp tìm kiếm không thành công, chúng ta giả sử rằng mỗi mẩutin có khả năng tìm thấy là như nhau, thì số trung bình của số lần so sánh sẽ là:

Con số này bằng đúng bằng đúng một nửa của trường hợp tìm kiếm không thànhcông

Ngoài phương pháp cài đặt bằng mảng như thuật toán trên, TÌM KIẾMTUẦN TỰ có thể được cài đặt bằng một phương pháp sử dụng một xâu liên kết

để biểu diễn các mẩu tin như:

b Tìm kiếm tuần tự cài đặt bằng xâu có thứ tự

Một trong những thuận lợi của phương pháp này là giữ cho xâu được sắpxếp, và nhờ đó có thể tìm kiếm nhanh hơn

type lienket = ↑ diem;

diem = record

key, infor :integer;

Trang 19

Vậy tìm kiếm tuần tự (cài đặt bằng xâu có thứ tự) sử dụng trung bình khoảngN/2 phép so sánh cho cả hai trường hợp tìm kiếm thành công và không thànhcông

Xét trường hợp ta tìm kiếm thành công với kỹ thuật trên: điều này ta cóthể thấy trực tiếp từ đoạn code trên

Trường hợp không thành công khi tìm kiếm:

Giả sử rằng khả năng tìm kết thúc ở mỗi phần tử trong xâu và nút z là nhưnhau thì số trung bình của các phép so sánh sẽ là:

1+ 2+ 3+…+ N+ (N+ 1)= (N+ 1)(N+ 2)/2

Chúng ta có thể cải tiến cải tiến thuật toán tìm kiếm bằng cách sắp xếp cácmẩu tin một cách thông minh nếu như ta được biết thông tin về tần số truy xuấtcác mẩu tin

Một sắp xếp được gọi là “tối ưu” là một mẩu tin được truy xuất thườngxuyên nhất ở vị trí đầu tiên, mẩu tin có tần suất truy xuất thường xuyên thứ hai

Trang 20

sẽ nằm ở vị trí thứ hai…Kỹ thuật này đặc biệt có hiệu quả trong những trườnghợp chỉ có một tập hợp nhỏ các mẩu tin được truy xuất thường xuyên Trườnghợp ta không có được thông tin về tần suất truy xuất ta vẫn có thể thực hiện một

kỹ thuật xấp xỉ đến sắp xếp tối ưu bằng cách tìm kiếm “tự tổ chức” như sau: Mỗi lần một mẩu tin được truy xuất, thì di chuyển chúng nên vị trí đầu tiên củaxâu Phương pháp này sẽ dễ dàng cài đặt nếu ta dùng xâu liên kết Tất nhiên thờigian thực hiện của phương pháp phụ thuộc vào sự phân bố của các mẩu tin, rấtkhó có thể tính trước được trong trường hợp tổng quát Dù vậy, phương phápnày rất phù hợp trong trường hợp mỗi mẩu tin có khuynh hướng gần những mẩutin khác

1.2/Phương pháp tìm kiếm nhị phân :

a Tìm kiếm nhị phân

Chúng ta đã xét phương pháp tìm kiếm tuần tự, cách này đơn giản trongquá trình cài đặt Song , hạn chế của phương pháp tuần tự là thời gian tìm kiếm

sẽ lâu trong trường hợp tập hợp tổng số mẩu tin lớn Để khắc phục hạn chế này,

ta có phương pháp tìm kiếm NHỊ PHÂN

Nếu tập hợp các mẩu tin lớn thì tổng số thời gian tìm kiếm sẽ được rútngắn bằng cách dùng một thủ tục tìm kiếm dựa trên sự ứng dụng sơ đồ “chia -

để - trị” Điều này có nghĩa là chúng ta sẽ chia những mẩu tin thành hai phần,xác định xem phần nào chứa khoá Kế đến tiếp tục công việc cho phần chứakhoá ta vừa tìm được Lý do mà chúng ta có thể chia đôi và chỉ tìm kiếm trênmột nửa các mẩu tin lf do ta đã giả thiết các mẩu tin được sắp xếp theo thứ tựKhoá Không mất tính tổng quát, ta giả thiết rằng các mẩu tin được sắp xếp theothứ tự tăng dần(trường hợp sắp xếp giảm dần có thể làm tương tự) Để tìm mộtkhoá k có trong một dãy số hay không, trước tiên ta so sánh nó với phần tử ở vịtrí giữa dãy ký tự Nếu k nhỏ hơn thì nó chỉ có thể là ở trong một nửa đầu tiêncủa dãy số Trường hợp k lớn hơn tức là k nằm trong nửa còn lại của dãy Chúng

ta sẽ tiếp tục áp dụng Đệ quy phương pháp này Ta có thể gọi Đệ quy một lần mà

có thể đưa ra thuật toán dùng phương pháp lặp Ta hãy cùng xét hàm dưới đây

để thấy được thuật toán Nhị Phân thể sẽ thực hiện như thế nào( giả sử rằng:mảng A đã được sắp xếp tăng theo thứ tự Khoá):

function TKnhiphan(k: integer): integer;

Trang 21

Như chúng ta thấy trên hàm, thuật toán này đã sử dụng các con trỏ l và r

để đánh dấu tập tin con hiện đang làm việc Mỗi khi vòng lặp thực hiện, biến xnhận giá trị điểm giữa của đoạn hiện hành Sẽ có ba khả năng sau xảy ra:

- Vòng lặp kết thúc thành công

- Con trỏ trái l thay đổi thành (x + 1)

- Con trỏ phải r được đổi thành (x - 1)

- Ba khả năng trên xảy ra tương ứng với giá trị tìm kiếm k bằng, nhỏhơn hay lớn hơn giá trị khoá của mẩu tin được lưu trữ trong mảng A[x];

- Xét 1 ví dụ cụ thể:

Cho 1 dãy ký tự: BBAACDEFFGHMPNHRX

Tìm kiếm M trong dãy ký tự trên bằng phương pháp nhị phân

Mô phỏng cách thực hiện thuật toán:

Ngày đăng: 29/08/2021, 15:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w