Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p5
lượt xem 5
download
Tham khảo tài liệu 'giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p5', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p5
- h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o DataTemp2. Haøm traû veà giaù trò laø chieàu daøi cuûa ñöôøng chaïy töï nhieân ñaàu tieân trong c u -tr a c k c u -tr a c k taäp tin döõ lieäu DataFile neáu vieäc phaân phoái hoaøn taát, trong tröôøng hôïp ngöôïc laïi haøm traû veà giaù trò –1. int FileNaturalMerge(char * DataTemp1, char * DataTemp2, char * DataFile); Haøm thöïc hieän vieäc troän töøng caëp töông öùng caùc ñöôøng chaïy töï nhieân treân hai taäp tin taïm thôøi coù teân DataTemp1, DataTemp2 veà taäp tin döõ lieäu ban ñaàu coù teân DataFile thaønh caùc ñöôøng chaïy coù chieàu baèng toång chieàu daøi 2 ñöôøng chaïy ñem troän. Haøm traû veà chieàu daøi cuûa ñöôøng chaïy töï nhieân ñaàu tieân sau khi troän treân taäp tin DataFile neáu vieäc troän hoaøn taát, trong tröôøng hôïp ngöôïc laïi haøm traû veà giaù trò –1. Noäi dung cuûa caùc haøm nhö sau: int FileNaturalDistribute(char * DataFile, char * DataTemp1, char * DataTemp2) { FILE * Fd = fopen(DataFile, “rb”); if (Fd == NULL) return (-1); FILE * Ft1 = fopen(DataTemp1, “wb”); if (Ft1 == NULL) return (Finished (Fd, -1)); FILE * Ft2 = fopen(DataTemp2, “wb”); if (Ft2 == NULL) return (Finished (Fd, Ft1, -1)); T a, b; int SOT = sizeof(T); int L = 0, FirstRun1 = 1; if (fread(&a, SOT, 1, Fd) < 1) { if (feof(Fd)) return (Finished(Fd, Ft1, Ft2, 0)); return (Finished (Fd, Ft1, Ft2, -1)); } while (!feof(Fd)) { do { int t = fwrite(&a, SOT, 1, Ft1); if (t < 1) return (Finished (Fd, Ft1, Ft2, -1)); if (FirstRun1 == 1) L++; t = fread(&b, SOT, 1, Fd); if (t < 1) { if (feof(Fd)) break; return (Finished (Fd, Ft1, Ft2, -1)); } if (a > b) { a = b; break; } a = b; } Trang: 73
- h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o while (1); c u -tr a c k c u -tr a c k if (feof(Fd)) break; do { int t = fwrite(&a, SOT, 1, Ft2); if (t < 1) return (Finished (Fd, Ft1, Ft2, -1)); t = fread(&b, SOT, 1, Fd); if (t < 1) { if (feof(Fd)) break; return (Finished (Fd, Ft1, Ft2, -1)); } if (a > b) { a = b; FirstRun1 = 0; break; } a = b; } while (1); } return (Finished (Fd, Ft1, Ft2, L); } //======================================================== int FileNaturalMerge(char * DataTemp1, char * DataTemp2, char * DataFile) { FILE * Fd = fopen(DataFile, "wb"); if(Fd == NULL) return(-1); FILE * Ft1 = fopen(DataTemp1, "rb"); if(Ft1 == NULL) return(Finished(Fd, -1)); FILE * Ft2 = fopen(DataTemp2, "rb"); if(Ft2 == NULL) return(Finished(Fd, Ft1, -1)); int a1, a2, b1, b2; if (fread(&a1, SOT, 1, Ft1) < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (fread(&a2, SOT, 1, Ft2) < 1) return(Finished(Fd, Ft1, Ft2, -1)); int L = 0; int FirstRun1 = 1, FirstRun2 = 1; while(!feof(Ft1) && !feof(Ft2)) { if (a1
- h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o L++; c u -tr a c k c u -tr a c k t = fread(&b1, SOT, 1, Ft1); if (t < 1) { if (feof(Ft1)) break; return(Finished(Fd, Ft1, Ft2, -1)); } if (a1 > b1) { do { t = fwrite(&a2, SOT, 1, Fd); if (t < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (FirstRun2 == 1) L++; t = fread(&b2, SOT, 1, Ft2); if (t < 1) { if (feof(Ft2)) { FirstRun2 = 0; break; } return(Finished(Fd, Ft1, Ft2, -1)); } if (a2 > b2) { FirstRun2 = 0; a2 = b2; break; } } while(1); a1 = b1; FirstRun1 = 0; if (feof(Ft2)) break; } a1 = b1; } else { int t = fwrite(&a2, SOT, 1, Fd); if (t < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (FirstRun2 == 1) L++; t = fread(&b2, SOT, 1, Ft2); if (t < 1) { if (feof(Ft2)) break; return(Finished(Fd, Ft1, Ft2, -1)); } if (a2 > b2) Trang: 75
- h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o { do { t = fwrite(&a1, SOT, 1, Fd); c u -tr a c k c u -tr a c k if (t < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (Fr1 == 1) L++; t = fread(&b1, SOT, 1, Ft1); if (t < 1) { if (feof(Ft1)) { FirstRun1 = 0; break; } return(Finished(Fd, Ft1, Ft2, -1)); } if (a1 > b1) { FirstRun1 = 0; a1 = b1; break; } } while(1); a2 = b2; FirstRun2 = 0; if (feof(Ft1)) break; } a2 = b2; } } while(!feof(Ft1)) { int t = fwrite(&a1, SOT, 1, Fd); if (t < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (FirstRun1 == 1) L++; t = fread(&a1, SOT, 1, Ft1); if (t < 1) { if (feof(Ft1)) break; return(Finished(Fd, Ft1, Ft2, -1)); } } while(!feof(Ft2)) { int t = fwrite(&a2, SOT, 1, Fd); if (t < 1) return(Finished(Fd, Ft1, Ft2, -1)); if (FirstRun2 == 1) L++; t = fread(&a2, SOT, 1, Ft2); Trang: 76
- h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o if (t < 1) c u -tr a c k c u -tr a c k { if (feof(Ft2)) break; return(Finished(Fd, Ft1, Ft2, -1)); } } return(Finished(Fd, Ft1, Ft2, L)); } //======================================================== int FileNaturalMergeSort(char * DataFile) { int Fhd = open(DataFile, O_RDONLY); if (Fhd < 0) return (-1); int N = filelength(Fhd)/sizeof(T); close (Fhd); if (N < 2) return (1); char * Temp1 = “Data1.Tmp”; char * Temp2 = “Data2.Tmp”; int L = 0; do{ L = FileNaturalDistribute(DataFile, Temp1, Temp2); if (L == -1) { remove(Temp1); remove(Temp2); return (-1); } if (L == N) break; L = FileNaturalMerge(Temp1, Temp2, DataFile); if (L == -1) { remove(Temp1); remove(Temp2); return (-1); } if (L == N) break; } while (L < N); remove(Temp1); remove(Temp2); return (1); } - Ví duï minh hoïa thuaät toaùn saép xeáp troän töï nhieân: Giaû söû döõ lieäu ban ñaàu treân taäp tin Fd nhö sau: 80 24 5 12 11 2 2 15 10 35 35 18 4 1 6 Ta tieán haønh phaân phoái vaø troän caùc ñöôøng chaïy töï nhieân: Trang: 77
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p7
5 p | 83 | 8
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p4
5 p | 84 | 8
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p3
5 p | 105 | 7
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p6
5 p | 78 | 6
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p5
5 p | 66 | 6
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p2
5 p | 68 | 6
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p5
5 p | 68 | 5
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p9
5 p | 63 | 5
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p7
5 p | 82 | 4
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p8
5 p | 53 | 4
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p1
5 p | 86 | 4
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p10
5 p | 62 | 4
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p8
5 p | 64 | 4
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p6
5 p | 60 | 4
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p4
5 p | 73 | 4
-
Giáo trình phân tích khả năng truy cập các thành phần tùy biến trong mảng có kích thước khác nhau p3
5 p | 73 | 4
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p2
5 p | 68 | 3
-
Giáo trình phân tích khả năng ứng dụng giao thức phân giải địa chỉ ngược RARP p9
5 p | 70 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn