Professional Documents
Culture Documents
D
: Mӑi d liӋu đưӧc lưu dҥng biӇu diӉn nhӏ
phân cӫa d liӋu i $ liӋu ch đưӧc lưu dҥng mã
ASCII, còn d liӋu sӕ đưӧc lưu dҥng nhӏ phân cӫa sӕ.
Ví dө có 2 d liӋu ³AB´, 12(int) lưu lên binary file:
V
byte '
K
(3) OS đӑc d liӋu
code segment miêu tҧ tұp tin
...........
$ata segment
(1)chương (2) OS kiӇm
Bӝ nhӟ cӫa trình nhӡ OS tra sӵ tӗn tҥi
chương trình C mӣ tұp tin cӫa tұp tin
z '
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
|
D Khai báo biӃn tұp tin trong C
FILE* f ;
D Chú ý:
- KiӇu FILE đưӧc khai báo trong thư viӋn stdio.h
- Khai báo File * f; là SAI.
D Thao tác tұp tin
- Đӑc d liӋu tӯ tұp tin ra biӃn i Đӑc file
- Ghi d liӋu tӯ biӃn vào tұp tin i Ghi file
u #
NӃu đӑc d liӋu tӯ đҫu file thì bӓ qua bưӟc chӑn vӏ trí sӁ đӑc.
Vӏ trí hiӋn hành cӫa file ngay sau khi mӣ file là đҫu file.
NӃu viӃt hàm thì tên file là tham sӕ.
u #
` NӃu ghi d liӋu ngay tӯ đҫu file thì bӓ qua bưӟc chӑn vӏ trí sӁ ghi.
Vӏ trí hiӋn hành cӫa file ngay sau khi mӣ file là đҫu file.
` NӃu viӃt hàm thì tên file là tham sӕ.
` NӃu trӏ cӫa biӃn đã có rӗi thì bӓ qua bưӟc 4.1
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT
ë
D ViӃt chương trình đӑc mӝt dãy sӕ có n phҫn tӱ lưu
trong tұp tin có tên ³c:/$uLieu.txt´, hiӇn thӏ các sӕ
chҹn lên màn hình console và viӃt các sӕ lҿ ra tұp
tin ³c:/Le.txt´.
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
à
D
! z
D Trҧ trӏ: 0: thành công
D Trҧ trӏ EOF ( hҵng -1) thҩt bҥi
D Ví dө:
m mm
m
!
m
"
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT V'
à+
D ĐӋ quy là mӝt thuұt toán dùng đӇ đơn giҧn hóa nh ng bài
toán phӭc tҥp bҵng cách phân nhӓ phép toán đó thành
nhiӅu phҫn đӗng dҥng. Qua viӋc giҧi nh ng bài toán
đưӧc phân nhӓ này, nh ng lӡi giҧi sӁ đưӧc kӃt hӧp lҥi đӇ
giҧi quyӃt bài toán lӟn hơn.
D v !5 27 %< (= >
1. Đӏnh nghĩa sӕ tӵ nhiên
0 là sӕ tӵ nhiên
N là sӕ tӵ nhiên n-1 là sӕ tӵ nhiên
2. Đӏnh nghĩa giai thӯa cӫa n
0! là 1
NӃu n>0, n! = n *(n-1)!
Sum(3) Sum (2) Sum (1) Sum (0)
- Đӏnh nghĩa đӋ quy
°
'
@
AV
BV 0
B
C
' D
@
A
'
] E BB 0 D
B
C
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
à+
D r (= > '4
- D
$
A]
- D
D
B 0 ;
BV $
E]
- ;
B $
A'
- ;
D
B 0 ;
BV $
E'
D u (F
ü
ü {
}
ü
{
}
$
B
Sum (a,n) = 0 , n=0
a[n-1] + Sum(a, n-1) , n>0
V
V
!
V
u
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ß]
Ä .
D Hàm đӋ quy là hàm mà trong thân hàm lҥi gӑi chính nó.
D Giҧi thuұt đӋ quy đҽp (gӑn gàng, dӉ chuyӇn thành chương
trình).
D HÀM Đӊ QUY: Vӯa tӕn bӝ nhӟ vӯa chҥy chұm
D NhiӅu ngôn ng không hӛ trӧ giҧi thuұt đӋ quy (Fortran).
D NhiӅu giҧi thuұt rҩt dӉ mô tҧ dҥng đӋ quy nhưng lҥi rҩt khó
mô tҧ vӟi giҧi thuұt không-đӋ-quy.
D Hàm đӋ quy kém hiӋu qӫa vì: tӕn bӝ nhӟ và gӑi hàm qúa
nhiӅu lҫn. Tuy nhiên viӃt hàm đӋ quy rҩt ngҳn gӑn
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ß'
u
%
D Sҳp xӃp trӝn
- Chia: chӑn điӇm gi a O(1)
- ĐӋ quy: Sҳp xӃp cho hai nӱa đưӧc chia
- Trӏ: Trӝn hai nӱa đã đưӧc sҳp xӃp O(n)
i Tәng chi phí sҳp xӃp là O(nlogn)
D Sҳp xӃp nhanh
- Chia: Phân danh sách đҫu vào thành hai phҫn dӵa vào
cӝt mӕc O(n)
- ĐӋ quy: sҳp xӃp trên hai nӱa
- Trӏ: kӃt nӕi hai nӱa đã đưӧc sҳp xӃp O(n)
i Tәng chi phí là O(nlogn)
D Tháp Hà Nӝi, chuӛi Fibonacci..
" # $ % " % $ #
#
" # $ % " $ # %
" # $ % " # $ %
" # $ %
2 1
"
"
% % # # 1
r r r r r r r r r
ã " % # #
W W W W W
p q q+1 r
V ß ] ¨ '
0 1 2 3 4
0 1 2 3 4
V
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ]'
v 0
p r
0 1 2 3 4
V
ß ] ¨ '
0 1 2 3 4
V
ß ] ¨ '
0 1 2 3 4
V
ß ] ¨ '
0 1 2 3 4
ß ] ¨ '
0 1 2 3 4
ß ] ¨ '
0 1 2 3 4
] ¨ '
0 1 2 3 4
¨ '
0 1 2 3 4
¨ '
0 1 2 3 4
'
0 1 2 3 4
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
v 0
p r
V ß ] ¨ '
0 1 2 3 4
8 8
8 8 8 8
| 7?57
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ¨V
03,
D Chia: lҩy mӝt phҫn tӱ x
ngүu nhiên (gӑi là cӑc) và
và chia dãy sӕ a thành 3 Î
thành phҫn.
- L phҫn tӱ nhӣ hơn x
- E phҫn tӱ bҵng x
- G phҫn tӱ lơn hơn x Î
D ĐӋ quy: sҳp xӃp L và G.
D Trӏ: KӃt hӧp L, E và G.
A2K
K2
E2K
K K K
2 B¨
V B
] Bß
] B
B¨
K
K
L
D Chӑn cӑc
¨ ¨ p ¨
¨ p ¨ p
p p
¨ ¨ p ¨
p ¨ p
p p
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ¨'
ë
¨ ¨ pp ¨
pp ¨ p
p p
¨ ¨ p ¨
p p
p p
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
ë
¨ ¨ p ¨
p ¨ ¨ p
p p
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
ë
¨ ¨ p ¨
p ¨ ¨ p
p p
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT 'V
ë
D KӃt hӧp
¨ ¨ p ¨ ¨
p ¨ ¨ p ¨ ¨
p p
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
ë 4
Chӑn ngүu nhiên
giá trӏ cӑc
___
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT 'ß
03,
void QuickSort(int a[], int left, int right) {
1. int i, j, x;
2. x = a[(left+right)/2]; // chӑn phҫn tӱ gi a làm gӕc
3. i = left; j = right;
//phân chia dãy sӕ thành hai phҫn
4. do {
5. while (a[i] < x) i++; // lһp đӃn khi a[i] >= x
6. while (a[j] > x) j--; // lһp đӃn khi a[i] <= x
7. if ( i <= j) {
8. Swap(a[i], a[j]);
9. i++; // qua phҫn tӱ kӃ tiӃp
10. j--; // qua phҫn tӱ đӭng trưӟc
11. }
12. } while (i<j);
13. if (left < j) // ph đoҥn bên trái
14. QuickSort(a, left, j);
15. if (right > i) // ph đoҥn bên phҧi
16. QuickSort(a, i, right);
}
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ']
à
D Trong trưӡng hӧp tӗi tӋ nhҩt (cӑc luôn là phҫn tӱ
lӟn nhҩt hoһc nhӓ nhҩt).
D L hoһc G có kích thưӟc là n-1, phҫn còn lҥi kích
thưӟc 0.
D $o vұy, đӝ phӭc tҥp O(n2)
- n
- n-1
- n-2
- ..
- 1
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '
03,
¨ ¨ ¨ ¨
¨ ¨ p ¨¨
ưӡ
ӧ ӕ ưӡ
ӧ
ҩ
V
V V
6Å Å
Å
6Å 6Å 6Å 6Å Å
V
V V
V Å
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT '¨
KTLT Nâng cao 2008 - Văn Thiên Hoàng - Khoa CNTT ''