Professional Documents
Culture Documents
Kỹ Thuật Lập Trình
Kỹ Thuật Lập Trình
Biên
www.hutech.edu.vn
*1.2021.CMP164*
-mail :
tailieuhoctap@hutech.edu.vn
I
...................................................................................................................I
.......................................................................................................... IV
............................................................................................................... 1
......................................................................................................... 1
.............................................................................................. 1
1.2.1 Khai báo ........................................................................................................ 1
.................................................................. 3
..................................................................... 4
...................................................................... 4
............................................................. 5
.......................................................... 7
.................................................... 7
1.3.1 Cách kha ......................................................................................... 8
....................................................................................... 8
............................................................................................. 9
............................................................................................... 9
1.4.1 Khai báo ........................................................................................................ 9
................................................................ 10
..................................................................... 11
..................................................................... 13
............................................................ 13
.................................................................................................... 15
................................................................................................ 17
.................................................... 17
2.2 KHAI BÁO VÀ ............................................................ 18
..................................................................................... 18
................................................................................ 18
....................................................................... 21
2.3.1 Phép gán...................................................................................................... 21
................................................................................... 22
................................................................................... 22
2.3.4 Phép so sánh ................................................................................................ 23
2 ......................... 23
........................................................................... 24
................................................................. 26
...................................................................................... 27
.............................................................................................. 27
........................................................................ 28
II
...................................................28
he ..................29
..........................................................................................30
........................................................................ 32
..........................................................................................32
2.6.2 Cách 1 ..........................................................................................................32
2.6.3 Cách 2 ..........................................................................................................34
2.7 ............................................................................... 36
.......................................................................................36
............................................................................36
........................................................37
...................................... 44
2.8.1 ..........................................................................................................44
..........................................................................................................44
.............................................................46
................................................................................................................ 48
.................................................................................................... 48
........................................................................................................... 52
....................................................................................................... 52
......................................................... 53
................................................................. 54
................................................................ 54
.................................................................................. 55
..........................................................................................55
............................................................................................55
............................................................................................56
............................................................................................57
.................................................................................................... 58
............................................................................................... 59
4. ....................................................................................................... 59
.......................................................................... 60
......................................................................................60
.....................................................................................................61
..................................................................................................62
..................................................................62
- Hàm rewind()......................................62
............................................................................ 63
.........................................................................63
..........................................................................64
.......................................................................... 66
- Hàm fwrite() ...................................................66
III
- Hàm fread() ................................................... 66
.................................................................................................... 71
BÀI 5: TÌM KI M ....................................................................................................... 72
5.1 GI I THI U V B I TO N T M KI M ................................................................ 72
5.2 T M KI M TUY N T NH..................................................................................... 73
........................................................................................ 74
.................................................................................................... 76
P ......................................................................................................... 77
6.1 GI I THI U V B I TO N S P X P .................................................................. 77
..................................................................................................... 77
6.1.2 ........................................................................................................... 77
PH C T P C A GI I THU T........................................................................ 78
........................................................... 78
................................................................ 79
................................................................................ 80
6. t.................................................................................... 80
............................................................................ 82
................................................................................ 83
................................................................................. 85
t ...................................................................................... 87
..................................................................................... 89
.................................................................................... 91
..................................................................................... 93
.................................................................................................... 95
............................................................................................ 96
IV
M C
- ,c
- Hi .
- .
- và nâng cao.
- B i 1:
- B i 2:
- B i 3:
- B i 4:
- B i 5:
- B i 6:
C t v logic v ki n th c to n h n.
V
L C, là môn h
gi p sinh viên l m quen v p l p tr
trên m y t nh gi p sinh viên c kh i ni m n v
c ch ti p c n v gi i quy t c c b i to , gi p sinh viên c kh p
c n v i c i l p tr nh, v l ti p c n v i c c h c ph n
quan tr ng c n l i c a ng nh Công ngh Thông tin. V v y, yêu c
u t i li c khi
n l p và g ch chân nh ng v không hi c t i li nl i.
1. trình (ch )
2. -
BÀI 1: 1
BÀI 1:
- c
1.1 KHÁI NI M
khi ta
1.2 M NG M T CHI U
1.2.1 Khai báo
Kha
Cú pháp:
Trong :
- <Tên
2 BÀI 1:
songuyen
sothuc
K daykytu
Cú pháp:
Cách
Cú pháp:
sizeof()
Ch
Ví d : :
float a [5];
float t = 10.0;
int i = 1;
a[0] = 4.2;
a[2] = t;
scanf("%f", &a[4]);
t = a[4];
a[ 2 ] = 9 scanf (
...................................................
a[ n- -1 ]);
Ví : Hàm
printf ( :
scanf ( ]);
K uyên:
BÀI 1: 5
int a[100];
a [2] = 9 print
...................................................
a [n-1] = 2 -1]);
]) ;
Bài toán 1:
- 1]
ng
S= S + a[i] ;
long s = 0;
for (int i = 0; i < n; i++)
s = s + a[i];
return s;
}
Bài toán 2
it
if (a[i] < 0)
BÀI 1: 7
.
return a[i];
return 1;
}
Hàm tính x
t .
Chú ý ng có
8 BÀI 1:
char
khai báo
V char [
char chuoi[50] NG
char name [] \
char ten[10] = \
khi
char a[4] =
char b[4];
b = a; /
BÀI 1: 9
2. Không ==, !=, <, > .
1.3.3 Nh p, xu t chu i
N
Cách 1:
char s[30];
Cách 2:
Cách 1: g
Cách 2:
Cú pháp:
10 BÀI 1:
- :
- dòng dòng
nhiêu.
-
nhiêu.
- g
là bao nhiêu (hay nói cách khác, .
.
Khai
int a [8][14];
Khai 10 hàng, 5
float
float b [10][5];
a[0][0] là
ng có .
0 1 2 3 4 5 6 7
0 [0][0] [0][1] [0][2] [0][3] [0][4] [0][5] [0][6] [0][7]
1 [1][0] [1][1] [1][2] [1][3] [1][4] [1][5] [1][6] [1][7]
2 [2][0] [2][1] [2][2] [2][3] [2][4] [2][5] [2][6] [2][7]
3 [3][0] [3][1] [3][2] [3][3] [3][4] [3][5] [3][6] [3][7]
#define d 30 // d
#define c 30 // c là
int a [d ][c] ;
d dòng c
m d hàng :
0 1 2 3 4 5 c-1
0 1 2 3 4 5 6 7
1 10 11 12 13 14 15 17
d-1 20 21 22 23 24 25 27
- :
a [ 0 ][ 1 ] = 2 scanf ( [0][1]);
a [ 0 ][ 2 ] = 3 scanf ( [0][2]);
...................................................
p d
scanf ( ;
- :
a [ 1 ][ 0 ] = 1 scanf ( [0]);
a [ 1 ][ 1 ] = 2 scanf (
a [ 1 ][ 2 ] = 3 scanf (
...................................................
scanf (
..................................................................................
- :
...................................................
dòng d:
scanf ( -1][j]) ;
BÀI 1: 13
:
:
void NhapMatran (int a[][10], int d, int c){
for (int i =0; i<d; i++)
for (int j=0; j< c; j++){
j ]);
}
}
#define MAX_SIZE 10
typedef MATRAN[MAX_SIZE][MAX_SIZE];
14 BÀI 1:
Tên_hàm(MATRAN
#define MAX_SIZE 10
typedef int MATRAN[MAX_SIZE][MAX_SIZE];
long TongMatran (MATRAN a, int d, int c){
long s = 0;
for (int i = 0; i < d; i++)
for (int j = 0; j < c; j++)
s = s + a[i][j];
return s;
}
#define MAX_SIZE 10
typedef int MATRAN[MAX_SIZE][MAX_SIZE];
long TongHang (MATRAN a, int c, int k){
long s = 0;
for (int j = 0; j < c; j++)
s = s + a[k][j];
return s;
}
BÀI 1: 15
Câu 1:
a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.
l.
Câu 2:
a.
và
b.
c.
d.
16 BÀI 1:
e.
f.
g. .
Câu 3:
a. d dòng và c d, c
b.
c.
d.
e.
f.
g. )
h.
BÀI 2: 17
BÀI 2:
: int x=4;
X 1024 4
M t s h ch h g ph khi d ng c
tránh nh ng h n ch g p cho ta m t lo
i là bi ng v i các sau:
1. sinh tr
2.
3.
1. n c
2.
Cú pháp: <K T
Ví : Kh b có ki i r
Ví f ki u
float f, *pf;
Gi :T a ch Tên bi .
Ví ;
Gán i r &x
Lúc c mô t
1024: 4
x
1024:
xp
2.2.2.2 L y giá tr c a bi n con tr ch t i
i dung c a ô nh m h i, ta s d ng cú pháp:
ptr = &x;
int y = *ptr;
#include <stdio.h>
#include <conio.h>
20 BÀI 2:
int main() {
a = 2;
b = 3;
printf("\nGia tri cua bien a = %d\nGia tri cua bien b = %d", a, b);
pa = &a;
pb = &b;
printf("\nNoi dung cua o nho con tro pa tro toi = %d", *pa);
printf("\nNoi dung cua o nho con tro pb tro toi = %d ", *pb);
return 0;
u t h
x = 95; // Truy nh
px = &x;
py = px; // B
BÀI 2: 21
y = *px; // Gán y=x
*py =17; //
1.
2.
1. Phép gán
2.
3.
4. Phép so sánh
pi = &x;
qi = pi;
int x;
char *pc;
pc = (char*
22 BÀI 2:
2.3.2 a ch
T c - v i1s guyên N nào ó; k u v
con tr . ch vùng nh vùng nh a con h ph n t .
px = &x[10];
Cho b
x[10+i]
px- x[10-i] .
o ng cách (s t ) gi a 2 con tr ó.
C ng h n
float *pf;
int *pi;
char *pc;
BÀI 2: 23
:
Chú ý
2.
3.
4.
1. malloc
2. calloc
3. realoc
4. new
: khi
malloc, calloc, realoc free.
N new
delete
24 BÀI 2:
n size_t.
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <process.h>
int main( ) {
char *str;
if(str==NULL){
return 0;
}
BÀI 2: 25
2.4.1.2 Hàm calloc
nItems*size
#include <stdio.h>
#include <alloc.h>
#include <string.h>
int main() {
return 0;
1.
2.
Trong
- ptr
26 BÀI 2:
- size
Ví d : int a, *pa;
pa l h c 16 x2 byte*/
M .
, ta new
Cú pháp:
các
new
double *p = NULL;
p = new double;
double *p = NULL;
exit(1);
BÀI 2: 27
}
m nào
delete trong
Cú pháp:
2.4.3 Thu h i b nh ng
1. K
2. free delete.
u d int, float,
typedef, enum, struct, union,
Khai báo:
struct DiemThi {
char masv[8];
char mamh[5];
int lanthi;
float diem;
28 BÀI 2:
} x;
sizeof (int)
sizeof (KieuThuc)
sizeof (x)
Ví d : Cho 1 m i s có n ph c c t
theo ki u m r .
#include <stdio.h>
#include <conio.h>
scanf("%d", &a[i]);
}
BÀI 2: 29
}
scanf("%d", a+i);
<Tên bi r ,
là 1 bi h c s
Ví d s khai báo:
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
int main()
int *a;
a = (int*)malloc(10);
a[i] = 2*i;
printf("%d ",a[i]);
printf("%d ",*(a+i));
return 0;
u ch
1. N .
2. .
3. .
int *p;
= new int[n];
P
1024
BÀI 2: 31
P P +1 P +2 P +3 P +4 P +5 P +6 P +7 P+n-1
1 2 3 4 5 6 7 8 n
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[n-1]
Cài t:
1. H :
{
for (int i=0; i<n; i++)
{ hap a[%d]:", i );
}
}
2. H :
{
for (int i=0; i<n; i++)
3. H :
long s = 0;
s = s + *(a+i));
return s;
4. Hàm
32 BÀI 2:
int main()
int *p;
p = (int*)malloc (100);
return 0;
D :
1. N
n<=100).
2. Xu .
3.
2.6.2 Cách 1
int *a;
*a
: a = new int[m][n];
BÀI 2: 33
a a +1 a +2 a +3 a +4 a +5 a +6 a+mxn-1
1 2 3 4 5 6 7 mxn
a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] a[0][5] a[0][6] a[m-1][n-1]
C :
1. H :
{
for (int i=0; i<m; i++)
for (int j=0; j<n; j++)
{
hap a[%d][%d]:", i , j);
%d ", (a+ i*n + j));
}
}
2. H :
printf("\n");
}
34 BÀI 2:
3. H :
s = s+ *(a+i *n +j);
2.6.3 Cách 2
a 1 2 3 4 5
a+1 6 7 8 9 10
a+i 11 12 13 14 15
a+m-1 16 17 18 19 20
a[1][1],a[1][2],....a[1][n-1]
-1]
1. H :
return s;
}
4. Hà :
{
for (int i=0; i<m; i++)
36 BÀI 2:
free (a[i]) ;
free (a);
\
.
Cách 1:
Cách 2:
char *
char *Hoten;
Cách 1: <stdio.h>
V : printf oten);
Cách 2:
gets (string);
p e
gets: fflush(stdin) hay flushall()
gets(hoten);
puts (string);
Hàm này x .
puts(hoten);
1. Hàm strcat:
Cú pháp:
#include "stdio.h"
#include "string.h"
int main() {
char s1[50], s2[50];
printf("\nNhap chuoi 1: ");
gets(s1);
printf("Nhap chuoi 2: ");
gets(s2);
strcat(s1,s2);
printf("Xuat chuoi 1: %s",s1);
printf("\nXuat chuoi 2: %s",s2);
return 0;
}
2. Hàm strchr:
Cú pháp:
NULL.
#include "stdio.h"
#include "string.h"
int main() {
char s[50], ch, *p;
printf("\nNhap chuoi: ");
gets(s);
printf("Nhap ky tu: ");
ch=getche();
BÀI 2: 39
p=strchr(s,ch);
if (p!=NULL)
printf("\nchi so cua ky tu: %d",(int)(p-s));
else
printf("\nKhong tim thay!");
return 0;
}
3. Hàm strcmp:
Cú pháp:
Cú pháp:
5. Hàm strcpy:
Cú pháp:
#include "stdio.h"
#include "string.h"
int main() {
40 BÀI 2:
char s[50];
strcpy(s,"Truong Dai hoc Ky thuat");
printf("\nXuat chuoi: %s",s);
return 0;
}
6. Hàm strncpy (): Sa
Cú pháp:
7. Hàm strchr():
Cú pháp:
8. Hàm strstr()
Cú pháp:
hoc
#include<conio.h>
BÀI 2: 41
#include<stdio.h>
#include<string.h>
int main() {
char Chuoi[255], *s ;
printf("Nhap chuoi: ");gets(Chuoi);
return 0;
}
9. Hàm strlen():
Cú pháp:
#include <stdio.h>
#include <string.h>
int main() {
char string [ ] = "Borland International";
printf("%d\n", strlen(string));
return 0; }
Ta g
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main() {
char newstr [35];
\
return 0;
}
Hàm toupper()
#include<conio.h>
#include<stdio.h>
#include<string.h>
int main() {
char Chuoi[255],*s;
printf("Nhap chuoi: "); gets(Chuoi);
s=strupr(Chuoi) ;
return 0;
}
12. - Hàm strlwr()
13.
BÀI 2: 43
Cú pháp:
#include <string.h>
int main() {
char s[80], *p ;
gets(s);
p = strtok(s," ");
while(p) {
p = strtok(NULL," ");
if (p) printf
}
return 0;
}
15.
44 BÀI 2:
char masv[8];
char mamh[5];
int lanthi;
float diem;
};
DIEM *p, x;
P = &x;
Cách 1:
Cú pháp -
Cách 2:
Cú pháp
2.8.2 Ví d 2
#include "stdio.h"
#include "conio.h"
BÀI 2: 45
struct DIEM {
char masv[8];
char mamh[5];
int lanthi;
float diem;
};
int main() {
float tam;
p=&x;
gets(p->masv);
gets(p->mamh);
printf("diem :");
p->diem=tam;
printf("\nKet qua:");
return 0;
}
46 BÀI 2:
#include "stdio.h"
#include "conio.h"
char masv[8];
char mamh[5];
int lanthi;
float diem;
};
int main()
{
DIEMTHI x;
printf("\nNhap diem thi");
nhap(&x);
printf("\nXuat diem thi");
xuat(x);
getch();
}
void xuat( DIEMTHI x)
{
printf("\nMa sinh vien :%s", x.masv);
printf("\nMa mon hoc:%s", x.mamh);
printf("\nLan thi:%d", x.lanthi);
BÀI 2: 47
printf("\nDiem thi:%.2f", x.diem);
}
void nhap(DIEMTHI *px)
{
float tam;
printf("\nMa sinh vien :");
gets(px->masv);
printf("Ma mon hoc:");
gets(px->mamh);
printf("Lan thi:");
scanf("%d%*c", &px->lanthi);
printf("Diem thi:");
scanf("%f%*c", &tam);
px->diem=tam;
}
48 BÀI 2:
- Khái ni v
- m
- m
a.
b.
c.
d.
e.
f.
g.
h. Tìm
i.
j.
k.
BÀI 2: 49
l.
m.
n. n
o.
p.
q.
r.
s.
t.
u.
Câu 2: :
a. (0< m, n
<100)
b.
c.
d.
e. T
f.
g.
h. c
i.
j. Tính
k.
l.
m.
50 BÀI 2:
n. T
o.
p.
q.
r.
s.
t. Tín
u.
v.
a.
b. X
c. X
d. T
e. T
Câu 4: r
a.
b.
c.
d.
e.
f.
Câu 5: t
BÀI 2: 51
a.
b. ên.
c. h viên.
d. .
e.
phím.
f.
g.
i.
j.
52 BÀI 3:
BÀI 3:
S
- quy;
3.1 KHÁI NI M
Ta có:
Cách 1:
if (n == 0)
return 0;
return TinhTong (n 1) + n;
2.
3. Tìm t
- Tham [ ], int n
Sum(a,n-1)
Sum(a,n) = 0 ,n= 0
C :
2.
3.
4.
5.
không- -quy.
6.
hà
2.
3.
4. g
a.
b. .
c.
.
d.
n.
5.
a.
BÀI 3: 55
b. á
.
c.
(1)
(2)
(3)
(4)
a ,n=1
Un = r + Un-1 ,n>1
if (n==1)
return a;
return r + U(n-1,a,r);
T
56 BÀI 3:
: 1 2 3 5 8 13 ...
1 , n=1, 2
Un =
Un-2 + Un-1 , n>21
u:
{
if (n<=2)
return 1;
return Fibo(n-2) + Fibo(n-1);
}
Un = n , n ,n <6
Un =
Un-5 + Un-4 + Un-3 + Un-2 + Un-1 ,n >6
nh sau:
long U (int n)
if (n<6)
return n;
long S= 0;
S += U(n-i);
return S;
}
BÀI 3: 57
3.5.4 quy h
2
Un = n , n<5
Un =
Un-1 + Gn-2 , n>=5
Gn = n-3 , n<8
Gn =
Un-1 + Gn-2 , n>8
long U (int n)
if (n<5)
return n;
long G(int n)
if (n<8)
return n-3;
}
58 BÀI 3:
Câu 1:
(0<n<100)
Câu 2:
Câu 3:
Câu 4:
Câu 5:
Câu 6: Tính
Câu 7:
Câu 8:
Câu 9:
Câu 10: g
Câu 11:
Câu 12:
Câu 13: g
BÀI 4: 59
BÀI 4:
4.1 KHÁI NI M
l
ngoài.
ngoài).
1.
SCII
ý
\ -
mã ASCII là 13) và LF (Line Feed - ASCII
ASCII là
Ctrl + Z).
60 BÀI 4:
2.
c byte
3. (Untyped File)
ên
(End Of File).
1.
2. ng hàm fopen().
3.
4.
stdio.h.
- Path
- Type á Mode:
r
w
a
rb
wb
ab i
r+
w+
a+
r+b
w+b
a+b hân
Hàm fopen
:\\
FILE *f;
:\\
if (f != NULL) {
/* Các câu l nh thao tác v i t p tin*/
/* óng t p tin*/
}
62 BÀI 4:
c w i
4.2.3 t p tin
Hàm fclose() ù
4.2.4 Ki n cu i t
K
rewind().
Hàm putc()
Hàm fputs()
Hàm fprintf()
- varexpr
%d
%o phân
%x
%c
%s
%e %E %g
64 BÀI 4:
: \\Baihat.txt
#include<stdio.h>
#include<conio.h>
int main () {
FILE *f;
f = fopen ("D:\\Baihat.txt", "r+");
if (f != NULL) {
fputs("Em oi Ha Noi pho.\n", f);
fputs("Ta con em, mui hoang lan; ta con em, mui hoa sua.", f);
fclose(f);
}
return 0;
}
o
4.3.2 cd li u t t n
Hàm getc()
ASCII
ic
Hàm fgets()
\
c
BÀI 4: 65
- buffer
- n
- f
- \
Hàm fscanf()
format:
varlist: hau
#include<stdio.h>
#include<conio.h>
int main() {
FILE *f1,*f2 ;
f1=fopen("D:\\Baihat.txt", "rt");
f2=fopen("D:\\Baica.txt", "wt");
if (f1 != NULL && f2 != NULL) {
int ch=fgetc (f1);
while (! feof (f1)) {
fputc(ch,f2);
ch=fgetc(f1);
}
66 BÀI 4:
fcloseall();
}
return 0;
}
- ptr
- n:
- size
- f
ày
Cú pháp: size_t fread (const void *ptr, size_t size, size_t n, FILE *f)
- ptr
- n
- size
- f
tin
BÀI 4: (FILE) 67
#include<stdio.h>
#include<conio.h>
int main() {
FILE *f;
f=fopen ("D:\\CacSo.txt", "wb";
if (f != NULL) {
double d=3.14;
int i=101;
long l=54321;
fwrite (&d, sizeof(double), 1, f);
fwrite(&i, sizeof(int), 1, f);
fwrite(&l, sizeof(long), 1, f);
/* Doc tu tap tin*/
rewind(f);
fread (&d, sizeof(double), 1, f);
fread(&i, sizeof(int), 1, f);
fread(&l, sizeof(long), 1, f);
printf("Cac ket qua la: %f %d %ld", d, i, l);
fclose(f);
}
return 0;
}
c
sách lên màn hình, tìm
t
68 BÀI 4:
#include<stdio.h>
#include<conio.h>
#include<string.h>
typedef struct {
char Ma[10];
char HoTen[40];
} SinhVien;
FILE *f;
int n,i;
SinhVien sv;
f=fopen(FileName,"ab");
scanf("%d",&n);
fflush(stdin);
for(i=1;i<=n;i++) {
gets(sv.Ma);
gets(sv.HoTen);
fwrite(&sv,sizeof(sv),1,f);
fflush(stdin);
fclose(f);
getch();
}
BÀI 4: 69
//----------- ---------------------------------------------------------------------
FILE *f;
SinhVien sv;
f=fopen(FileName,"rb");
fread (&sv,sizeof(sv),1,f);
while (!feof(f)) {
printf(" %s | %s\n",sv.Ma,sv.HoTen);
fread(&sv,sizeof(sv),1,f);
fclose(f);
getch();
char MSSV[10] ;
FILE *f ;
int Found=0;
SinhVien sv;
fflush(stdin);
gets(MSSV);
f=fopen(FileName,"rb");
fread(&sv,sizeof(sv),1,f);
if (strcmp(sv.Ma,MSSV)==0)
Found=1;
70 BÀI 4:
fclose(f);
if (Found == 1)
else
getch();
int main() {
int c;
for (;;) {
printf("2. In DSSV\n");
printf("4. Thoat\n");
scanf("%d",&c);
if(c==1)
WriteFile("d:\\SinhVien.Dat");
else if (c==2)
ReadFile("d:\\SinhVien.Dat");
else break;
return 0 ;
}
BÀI 4: 71
CÂU
Câu 1: V
a.
b.
c. và cho phép
Câu 2:
a. ê
b.
c.
Câu 3:
a.
b.
c.
72 BÀI 5: TÌM K I M
BÀI 5: TÌM KI M
5.1 GI I THI U V B I TO N T M KI M
n d
i to n:
5.2 M TUY N T NH
D
h.
B1: i = 0;
a
a[i]
B3: i = i + 1 m
n
n
-
int Search(int a[], int n, int key)
{
int i =0;
while (i<n && key != a[i])
i++;
if (i < n)
return i;
return -1;
}
.
74 BÀI 5: TÌM K I M
..., x;
=x
<x x
Tìm x
>x x
Tìm x ight-1]
> right
a[mid] = x
Th t
76 BÀI 5: TÌM K I M
a.
b.
a. n
b. Tìm x x
phím).
c. x x
phím).
d.
t.
BÀI 6: P 77
BÀI 6: S P X P
Sau
6.1 GI I THI U V B I TO N S P X P
6.1.1 Gi i thi u
trúc
- T n t
6.1.2 Mô t
S
c
78 BÀI 6: P
n.
Mô t bài toán:
n tin
tin, c
tin : So sánh
6.2 C T P C A GI I THU T
6.2.1 Khái ni m v ph c t p c a gi i thu t
T
y tính.
p trong
vào, ký
0.
T(n) = C*n
BÀI 6: P 79
ào có cùng kích
ãy
nh
0
N0
- (T(n)=C)
- O(log2
- O(
- O(nlog2
- O(n!), O(nn
t p
6.2.2 ph c t p c a gi i thu t
Q là:
O(max(f(n),g(n)))
:
80 BÀI 6: P
O(f(n).g(n))
n b b a
1 n 1 1 1 b a 1
i 1 i a i 1 i 1
n n
n( n 1) n( n 1) (a 1) a
i i
i 1 2 i a 2
n2
n 2 ( n 2 1)
n
2 n( n 1)(2n 1) n
3 n2 ( n 1) 2
i i i
i 1 2 i 1 6 i 1 4
pp
B1: i=0;
B2: j=n-1;
A[]
25 55 45 40 10 90 85 35
tiên
:
25 55 45 40 10 90 85 35
j
7 25 55 45 40 10 90 35 85
6 25 55 45 40 10 35 90 85
5 25 55 45 40 10 35 90 85
4 25 55 45 10 40 35 90 85
3 25 55 10 45 40 35 90 85
2 25 10 55 45 40 35 90 85
1 10 25 55 45 40 35 90 85
Sa (10)
- 2,
- -
y.
D
25 55 45 40 10 90 85 35
0 10 25 55 45 40 35 90 85
1 10 25 35 55 45 40 85 90
2 10 25 35 40 55 45 85 90
3 10 25 35 40 45 55 85 90
4 10 25 35 40 45 55 85 90
5 10 25 35 40 45 55 85 90
6 10 25 35 40 45 55 85 90
10 25 35 40 45 55 85 90
82 BÀI 6: P
mà không tho ,t
B1: i = 0;
B2: j = i +1; /
D terchange
25 55 45 40 10 90 85 35
BÀI 6: P 83
, i=0:
u
25 55 45 40 10 90 85 35
j
1 25 55 45 40 10 90 85 35
2 25 55 45 40 10 90 85 35
3 25 55 45 40 10 90 85 35
4 10 55 45 40 25 90 85 35
5 10 55 45 40 25 90 85 35
6 10 55 45 40 25 90 85 35
7 10 55 45 40 25 90 85 35
q
25 55 45 40 10 90 85 35
0 10 55 45 40 25 90 85 35
1 10 25 55 45 40 90 85 35
2 10 25 35 55 45 90 85 40
3 10 25 35 40 55 90 85 45
4 10 25 35 40 45 90 85 55
5 10 25 35 40 45 55 85 90
6 10 25 35 40 45 55 85 90
M :
y n-
- - 0.
- 0
84 BÀI 6: P
- Dò tìm trong - 1.
- 1
- - i.
- i .
...
h -
- - - n-
2.
- n-2 -2.
a[mi a a[n-1]
a[i] và a[min]
-2 thì i = i+1
25 55 45 40 10 90 85 35
Ban 25 55 45 40 10 90 85 35
0 10 55 45 40 25 90 85 35
1 10 25 45 40 55 90 85 35
2 10 25 35 40 55 90 85 45
3 10 25 35 40 55 90 85 45
4 10 25 35 40 45 90 85 55
5 10 25 35 40 45 55 85 90
6 10 25 35 40 45 55 85 90
BÀI 6: P 85
lection Sort:
vtmin = j;
}
Swap(a[vtmin], a[i]); a
}
int vtmin = i;
for(int j = i+1; j < n; j++)
}
}
- a
a[0] và a[1].
- a
a[0], a[1] và a[2].
B1: i = 1; a
B2: x= a[i];
B5: i = i +1;
D sách:
25 55 45 40 10 90 85 35
a[pos+1] = a[pos];
pos--;
}
a[pos+1] = x; //chè
}
}
...
g
88 BÀI 6: P
k 0;
dãy con
B3: i = i+1
10 3 7 6 2 5 4 16
10 3 7 6 2 5 4 16
Dãy
1 5 10
2 3 4
3 7 16
4 6
5 2
5 3 7 6 2 10 4 16
-
Ban
5 3 7 6 2 10 4 16
Dãy
1 4 5 6
2 2 3 16
3 7 10
4 2 7 5 3 10 6 16
-
4 2 7 5 3 10 6 16
2 3 4 5 6 7 10 16.
a[pos+len] = a[pos];
pos = pos len; // rong dãy con
}
a[pos+len] = x;
}// end for i
}// end for step
T . ,d
quick .
-
l .
-
-
, các ph -
.
- -1 và
-
B1: k right,
Cho x = a[k], i = left, j = right.
B2-
90 BÀI 6: P
B3:
j:
Quick S
25 55 45 40 10 90 85 35
m 25 55 45 40 10 90 85 35
40 25 35 10 40 45 90 85 55
35 25 10 35 40
25 10 25
90 45 55 85 90
10 25 35 40 45 55 85 90
sau:
- húng
- 2
while(low1+size<n){
low2=low1+size;
up1=low2-1;
up2=(low2+size-1<n)? (low2+size-1):(n-1);
for(i=low1,j=low2;i<=up1 && j<=up2;k++)
if(a[i]<=a[j]) dstam[k]=a[i++];
else dstam[k]=a[j++];
for(;i<=up1;k++) dstam[k]=a[i++];
for(;j<=up2;k++) dstam[k]=a[j++];
low1=up2+1;
}
for(i=low1;k<n;i++) dstam[k++ ]=a[i];
for(i=0;i<n;i++) a[i]=dstam[i];
size *=2;
}
}
Merge S
25 55 45 40 10 90 85 35
Hình 6.1:
BÀI 6: P 93
6.3.8 Gi i thu t Radix Sort
K thâ
- ...
-
0 9.
- n
B1: k = 0; //
...
B3:
For i=1 to n do
B4:
k = k +1
Dùng Radix S 493 812 715 710 195 437 582 340 385
94 BÀI 6: P
a. b. Phân lô dã
Dãy con Dãy con
0 710 340 0
1 1 710 812 715
2 812 582 2
3 493 3 437
4 4 340
5 715 195 385 5
6 6
7 437 7
8 8 582 385
9 9 493 195
710 340 812 582 493 715 195 710 812 715 437 340 582 385
385 437 493 195
ng t
Dãy con
0
1 195
2
3 340 385
4 437 493
5 582
6
7 710 715
8 812
9
long B[10][MAX];
int Len[10]; // kích
B[digit][Len[digit]++] = a[i];
}
num = 0;
a[num++] = B[i][j];
h *= 10;
}
} //end RadixSort
Câu 1:
a.
b.
d.
Câu 2:
a.
.
b. dan
.
96
1. - - 2003.
2. - 1997.
3. Hoà
- 1999.
4.
5.
2000.
6.
7.
8. Brain W. Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall
Publisher, 1988.