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

Một số phương pháp sắp xếp và lưu trữ tệp tin

52 6 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 52
Dung lượng 622,91 KB

Nội dung

Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Trờng đại học vinh Khoa c«ng nghƯ th«ng tin - - nguyễn thị nga Một số phơng pháp xếp lu trữ tập tin Khóa luận tốt nghiệp đại học Vinh, 2008 Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Mục Lục Trang Lời nói đầu Ch-ơng I Các ph-ơng pháp xÕp 1.1 Tæng quan 1.1.1 ý nghÜa khái niệm toán 1.1.2 Cách xếp liệu ngôn ngữ sử dụng 1.2 Các ph-ơng pháp xếp đơn giản 1.2.1 Selection sort 1.2.2 Insertion sort 11 1.2.3 Bubble sort 14 1.3 Quick sort 17 1.3.1 ý t-ëng 17 1.3.2 ThiÕt kÕ 17 1.3.3 Gi¶i tht 19 1.3.4 VÝ dơ 19 1.3.5 L-u đồ 20 1.3.6 Ch-ơng trình 22 1.3.7 Đánh giá ch-ơng trình 22 1.4 Heap Sort 24 1.4.1 §Þnh nghÜa 24 1.4.2 ý t-ëng-ThiÕt kÕ 24 1.4.3 VÝ dụ 26 1.4.4 L-u đồ hàm PushDown 31 1.4.5 Ch-ơng trình 32 1.4.6 Đánh giá ch-ơng trình 33 1.5 Bin Sort Ngun ThÞ Thanh Nga 33 Líp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Ch-ơng II Sắp xếp l-u trữ liệu nhớ 36 2.1 Cấu trúc nhận xét chung ch-ơng trình xử lý 36 2.2 Ph-ơng pháp xếp 37 2.2.1 Khái niệm 37 2.2.2 Giới thiệu xếp trộn 37 2.2.3 Giới thiệu số cách xếp trộn khác 41 2.3 Tìm kiếm thông tin tập tin 44 2.3.1 Giíi thiƯu 44 2.3.2 C¶i thiƯn tèc ®é thao t¸c tËp tin 44 2.3.3 Hash Files 44 2.3.4 Cây tìm kiếm 46 Kết luận 50 Tài liệu tham khảo 51 Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Lời nói đầu Hiện Việt Nam b-ớc vào thời kỳ phát triển mạnh kinh tế lẫn khoa học kỹ thuật Tin học xâm nhập vào hầu hết ngành kinh tế sống xà hội Điều ®ã ®· thóc ®Èy sù phỉ cËp cđa tin häc hình thành đội ngũ ngày đông đảo ng-ời sử dụng thành thạo ứng dụng tin học công việc Ngày nay, thời kỳ công nghiệp hoá, đại hoá đất n-ớc công nghệ thông tin mũi nhọn đ-ợc -u tiên hàng đầu để đ-a n-ớc ta tiến lên ngang tầm với n-ớc phát triển khu vực nh- toàn giới Tin học đà góp phần quan trọng sống nhân loại, phần đà đáp ứng đ-ợc nhu cầu đòi hỏi ngày cao lĩnh vực sống ng-ời Đà qua thời tính toán, xếp, l-u trữ liệu ph-ơng pháp thủ công, ngày Công nghệ Thông tin đà thay ph-ơng thức hoàn toàn mẻ, sáng tạo, nhanh chóng đặc biệt không tính xác Mặt khác việc ứng dụng Công nghệ Thông tin đà đánh dấu b-ớc ngoặt việc áp dụng tin học vào hệ thống quản lý, xếp liệu Từ thực tế, việc tổ chức xếp tìm kiếm quan trọng Tr-ớc đây, đà làm quen với số ph-ơng pháp xếp tìm kiếm Khi xây dựng giải thuật ch-ơng trình t-ơng ứng, có hàng loạt yêu cầu phân tích toán đặt nh- tính đắn, tính đơn giản giải thuật Tính đắn đ-ợc thể chỗ có cho kết toán hay không? Tính đơn giản thể chỗ dễ hiểu dễ lập trình, dễ chỉnh lý Tuy nhiên cách đơn giản để giải toán ch-a hẳn lúc cách tốt nhất, cần phải cân đối yêu cầu thời gian nhớ thực Ph-ơng pháp để xác định hiệu thời gian thực giải thuật lập trình đo l-ờng thời gian thực hoạt động máy tính xác định tập hợp đ-ợc chọn lọc liệu vào Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Đối với toán, việc tìm lời giải đạt kết nhanh yêu cầu thực tế, việc đánh giá thời gian thực giải thuật phụ thuộc vào nhiều yếu tố, yếu tố đáng đ-ợc ý kích th-ớc liệu đ-a vào Chẳng hạn, thời gian xếp dÃy số phải chịu ảnh h-ởng số l-ợng số thc d·y sè ®ã VÝ dơ: NÕu gäi kÝch th-íc liệu vào n thời gian T thực giải thuật phải đ-ợc biểt diễn hµm cđa n vµ ký hiƯu lµ T(n) Thêi gian thực ch-ơng trình hàm không âm Vậy T(n) n Đơn vị T(n) đơn vị đo thời gian bình th-ờng nh- giờ, phút, giây mà th-ờng đ-ợc xác định số lệnh đ-ợc thực máy tÝnh lý t-ëng VÝ dô: Khi ta nãi thêi gian thực ch-ơng trình T(n)=Cn có nghĩa ch-ơng trình cần Cn thị thực thi Xác định độ phức tạp tính toán giải thuật dẫn tới toán phức tạp Tuy nhiên, thực tế số giải thuật Giả sử T1(n),T2(n) thời gian thực hai đoạn ch-ơng trình P1 P2 Trong T1(n)=O(f(n)), T2(n)=O(g(n)) Ta phân tích đ-ợc nhờ vào hai quy tắc sau: Quy tắc tổng: Thời gian thực đoạn ch-ơng trình P1 đến P2 là: T(n)=T1(n)+T2(n)=O(max(f(n),g(n))) Quy tắc nhân: Thời gian thực đoạn ch-ơng trình P1 P2 lồng là: T(n)=T1(n).T2(n)=O(f(n).g(n)) Thời gian thực ch-ơng trình không phụ thuộc vào kích th-ớc mà phụ thuộc vào tính chất liệu vào Nghĩa liệu vào cã cïng kÝch th-íc nh-ng thêi gian thùc hiƯn ch-¬ng trình khác Chẳng hạn, ch-ơng trình xếp dÃy số nguyên tăng dần, ta cho vào dÃy có thứ tự thời gian thực khác víi ta cho vµo d·y ch-a cã thø tù, Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin ta cho vào dÃy đà có thứ tự tăng thời gian thực khác so với ta cho vào dÃy ®· cã thø tù gi¶m Do vËy, th-êng ta coi T(n) thời gian thực ch-ơng trình tr-ờng hợp xấu liệu vào có kích th-ớc n, tức là: T(n) thời gian lớn để thực ch-ơng trình liệu vào có kích th-ớc n Vấn đề đặt phải xây dựng ph-ơng pháp thành hƯ thèng ®Ĩ cho ng-êi ®äc dƠ hiĨu, dƠ nhí Trong phạm vi đề tài đề cập đến việc xếp liệu nhớ việc l-u trữ, tìm kiếm, xếp nhớ Luận văn lời nói đầu, kết luận tài liệu tham khảo đ-ợc xây dựng gồm hai ch-ơng sau: Ch-ơng 1: Các ph-ơng pháp xếp Ch-ơng : Sắp xếp, l-u trữ liệu nhớ Để hoàn thành đ-ợc khóa luận, đà nhận đ-ợc giúp đỡ nhiệt tình cô giáo Phan Lê Na Nhân dịp cho phép bày tỏ lòng biêt ơn đến cô gio hướng dẫn, cc thầy gio, cô gio tổ Khoa học my tính, toàn thể thầy giáo, cô giáo khoa Công nghệ Thông tin tr-ờng Đại học Vinh Các thầy, cô đà động viên giúp đỡ nhiều trình rèn luyện học tập Tuy nhiên, thời gian có hạn lực hạn chế nên khóa luận chắn không tránh khỏi sai sãt RÊt mong sù gãp ý quý b¸u tõ phía thầy giáo, cô giáo bạn sinh viên Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Ch-ơng I Các ph-ơng pháp xếp Trong ch-ơng ta tìm hiểu ph-ơng pháp xếp sau: Các ph-ơng pháp xếp đơn giản gồm : Selection Sort (sắp xếp chọn) Insertion Sort (s¾p xÕp xen) Bubble Sort (s¾p xÕp nỉi bät)  Quick Sort  Heap Sort  Bin Sort Tr-ớc tìm hiểu phần ta cần biết số khái niệm toán xếp 1.1 Tổng quan 1.1.1 ý nghĩa khái niệm toán xếp Sắp xếp danh sách đối t-ợng theo thứ tự toán th-ờng đ-ợc vận dụng ứng dụng tin học Ví dụ ta cần xếp danh sách thí sinh theo tên với thứ tự Alphabet, xếp danh sách sinh viên theo điểm trung bình theo thứ tự từ cao đến thấp Vậy xếp yêu cầu thiếu thiết kế phần mềm Do việc nghiên cứu ph-ơng pháp xếp cần thiết để vận dụng lập trình Sắp xếp xếp liệu đ-ợc tổ chức nhớ máy tính Các đối t-ợng cần đ-ợc xếp mẩu tin gồm nhiều tr-ờng Một tr-ờng đ-ợc gọi khoá (key), kiểu cđa nã lµ mét kiĨu cã quan hƯ thø tù (nh- kiểu số nguyên, số thực, chuỗi ký tự) Danh sách đối t-ợng cần xếp mảng mẩu tin vừa nói Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Mục đích việc xếp tổ chức lại mẩu tin cho khoá chúng đ-ợc thứ tự t-ơng ứng với quy luật xếp Sắp xếp xếp đ-ợc sử dụng số l-ợng đối t-ợng cần xếp lớn l-u trữ nhớ mà phải l-u trữ nhớ 1.1.2 Cách xếp liệu ngôn ngữ sử dụng Để trình bày ví dụ minh hoạ dùng C làm ngôn ngữ thể ví dụ sử dụng khai báo sau làm khai báo cho toán xếp Const int n=10; Typedef int keytype; Typedef float othertype; Typedef struct recordtype {keytype key; Othertype otherfields; }; Recordtype a[n]; Void Swap( recordtype *x, recordtype *y) { Recordtype temp; Temp=*x; *x=*y; *y=temp;} Ta thÊy r»ng thđ tơc Swap lÊy O(1) thêi gian v× chØ thùc hiƯn ba lệnh gán nối tiếp 1.2 Các ph-ơng pháp xếp đơn giản 1.2.1 Selection Sort (sắp xếp chọn) Giải thuật: B-ớc 0: Chọn phần tử có khoá nhỏ n phần tử từ a[0] đến a[n1] hoán vị với phần tử a[0] B-ớc 1: Chọn phần tử có khoá nhỏ n-1 phần tử từ a[1] đến a[n-1] hoán vị với a[1] Tổng quát b-ớc thứ i, chọn phần tử có khoá nhỏ n-i phần tử từ a[i] đến a[n-i] hoán vị với a[i] Sau n-1 b-ớc mảng đà đ-ợc xếp Nguyễn Thị Thanh Nga Líp 45A1 CNTT Kho¸ ln tèt nghiƯp Mét số ph-ơng pháp xếp l-u trữ tập tin Ph-ơng pháp chọn: Đầu tiên ta đặt khoá nhỏ khoá a[i] (lowkey=a[i].key) số phần tử có khoá nhỏ i (lowindex=i) Xét phần tử a[j] (với j từ i+1 đến n-1), khoá a[j] nhỏ khoá nhỏ (a[j].key n-1) phần tử có khoá nhỏ a[lowindex] Ví dụ 1: Sắp xếp mảng gồm 10 mẩu tin có khoá số nguyên: 5, 8, 2, 10, 5, 12, 8, 1, 15 vµ B-ớc 0: Ta chọn đ-ợc phần tử có khoá nhỏ (bằng 1) phần tử từ a[0] đến a[9] a[7], a[0] a[7] Sau b-ớc a[0] có khoá nhỏ B-ớc 1: Ta chọn đ-ợc phần tử có khoá nhỏ (bằng 2) phần tử từ a[1] đến a[9] a[2], a[1] a[2] Tiếp tục trình sau b-ớc kết thúc Nguyễn Thị Thanh Nga Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin Bảng sau ghi lại giá trị khoá t-ơng ứng với b-ớc Khoá B-íc a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] Ban đầu 10 12 15 B-íc 10 12 15 10 12 15 4 10 12 15 10 12 15 12 10 15 8 12 10 15 8 10 15 12 10 15 12 12 15 12 15 B-íc B-íc B-íc B-íc B-íc B-íc B-íc B-íc KÕt qu¶ Ngun ThÞ Thanh Nga 5 10 8 10 Líp 45A1 CNTT Kho¸ ln tèt nghiƯp Mét số ph-ơng pháp xếp l-u trữ tập tin Kiểu liệu tập tin kiểu thích hợp cho việc biểu diễn liệu đ-ợc l-u nhớ Bộ nhớ Ghi Ghi Bộ nhớ đệm Bộ nhớ Đọc Đọc Mỗi lần truy suất mẩu tin Mỗi lần truy suất khối Nhận xét chung ch-ơng trình xử lý Đối với nhớ thời gian tìm khối để ®äc vµo bé nhí lµ rÊt lín so víi thời gian thao tác liệu khối Chúng ta tập trung vào việc xét số lần đọc khối vào nhớ số lần ghi khối bé nhí ngoµi, ta gäi chung lµ phÐp truy xuÊt khèi (block access) NÕu sè lÇn truy xuÊt khèi giải thuật có hiệu Để cải tiến giải thuật, ta tìm cách tăng kích th-ớc khối (vì kích th-ớc khối cố định) mà phải tìm cách giảm số lần truy xuất khối 2.2 Ph-ơng pháp xếp 2.2.1 Khái niệm: Sắp xếp xếp liệu đ-ợc tỉ chøc thµnh mét tËp tin l-u bé nhí Mỗi tập tin bao gồm nhiều mẩu tin, mÈu tin bao gåm nhiỊu tr-êng, ®ã cã mét tr-ờng khoá T-ơng tự nh- xếp trong, xếp tổ chức lại mẩu tin cho khoá chúng đ-ợc thứ tự t-ơng øng víi quy lt s¾p xÕp 2.2.2 Giíi thiƯu vỊ xếp trộn Khái niệm đ-ờng: Đ-ờng độ dài k tập hợp k mẩu tin đà đ-ợc thứ tự theo khoá Cho tập tin chứa mÈu tin r1, r2, …, rn, ta nãi tËp tin đ-ợc tổ chức thành đ-ờng có độ dài khoá ta chia tập tin thành đoạn k mẩu tin liên Nguyễn Thị Thanh Nga 38 Lớp 45A1 CNTT Khoá luận tốt nghiệp Một số ph-ơng pháp xếp l-u trữ tập tin tiếp với đoạn đ-ờng, đoạn cuối đủ k mẩu tin, tr-ờng hợp ta gọi đoạn đuôi (tail) Giải thuật: Để xếp tập tin F cã n mÈu tin ta sư dơng tập tin F1, F2, G1 G2 Phân phối mẩu tin tập tin đà cho F luân phiên vµo hai tËp tin F1, F2 Nh- vËy hai tập tin xem nh- đ-ợc tổ chức thành đ-ờng độ dài B-ớc 1: Đọc hai đ-ờng, ®-êng ®é dµi tõ hai tËp tin F1, F2 trộn lại thành đ-ờng độ dài ghi luân phiên vào hai tập tin G 1, G2 §ỉi vai trß cđa F1 cho G1, F2 cho G2 B-ớc 2: Đọc hai đ-ờng, đ-ờng độ dài từ hai tập tin F 1, F2 trộn lại thành đ-ờng độ dài ghi luân phiên vào hai tập tin G 1, G2 Đổi vai trò F1 cho G1, F2 cho G2 Quá trình tiếp tục sau i b-ớc độ dài đ-ờng i Nếu 2i n giải thuật kết thúc, lúc tập tin G2 rỗng tập tin G1 chứa mẩu tin đà đ-ợc Ví dụ: Cho tập tin F có 21 mẩu tin với khoá số nguyên nh- sau: 13, 31, 5, 98, 95, 7, 10, 9, 85, 13, 10, 8, 77, 40, 30, 8, 50, 35, 22, 13, 25 Để bắt đầu ta phân phối mẩu tin F luân phiên vào hai tập tin F1 F2 đ-ợc tổ chức thành đ-ờng có ®é dµi F1 13 95 10 F2 31 98 85 10 13 77 40 30 50 35 22 25 13 Trộn đ-ờng độ dài F1 F2 đ-ợc đ-ờng độ dài ghi luân phiên vào hai tập tin G1, G2 G1 13 31 G2 98 95 10 Ngun ThÞ Thanh Nga 13 85 40 10 39 77 30 35 13 50 25 22 Líp 45A1 CNTT Kho¸ ln tèt nghiƯp Mét sè ph-ơng pháp xếp l-u trữ tập tin Đổi vai trò F1 G1, F2 G2 ta đ-ợc hai tập tin F1 F2 13 F1 31 95 13 85 98 10 10 F2 Trộn lần ta đ-ợc G1 G2 nh- sau: 40 77 30 G1 13 31 98 10 13 85 G2 10 95 30 40 77 35 13 13 22 50 25 22 35 50 25 Tiếp tục đổi vai trò F1 G1, F2 G2 trộn lần ta đ-ợc G1 G2 nhsau: G1 G2 8 10 10 13 13 30 31 40 95 77 98 13 22 25 35 50 85 TiÕp tục đổi vai trò F1 G1, F2 G2 trộn lần ta đ-ợc G1 G2 nhsau: G1 8 10 10 13 13 30 31 40 77 85 95 98 G2 13 22 25 35 50 Trộn đ-ờng độ dài 16 F1 F2 đ-ợc đ-ờng độ dài 23 ghi vµo tËp tin G1 G1 8 10 10 13 13 13 22 25 30 31 35 40 50 77 85 95 98 G2  Ch-ơng trình: Trộn chia hai ch-ơng trình dùng để thực công việc trộn ghi vào tập tin Hai ch-ơng trình đ-ợc viết nh- sau: void chia(int p) { int dem,x; FILE *b,*c,*a; Ngun ThÞ Thanh Nga 40 Líp 45A1 CNTT Kho¸ ln tèt nghiƯp Một số ph-ơng pháp xếp l-u trữ tập tin a=fopen("tep.txt","rb"); b=fopen("tep1.txt","wb"); c=fopen("tep2.txt","wb"); while(!feof(a)) { dem=0; while((dem

Ngày đăng: 02/12/2021, 23:44

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

TÀI LIỆU LIÊN QUAN

w