1. Trang chủ
  2. » Công Nghệ Thông Tin

kỹ thuật lập trình C chuyên nghiệp phần 3 docx

22 298 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 22
Dung lượng 627,24 KB

Nội dung

MảngMảng Tì ị tíXt dãTì ị tíXt dã Mảng Mảng –– Tì m v ị t r í X t rong dã y Tì m v ị t r í X t rong dã y ầầ  BàiBài toántoán::TìmTìm vịvị trítrí XXtrêntrên mảngmảng aa đangđang cócó NN thànhthành p h ầ n p h ầ n  GiảiGiải pháppháp::TìmTìm tuầntuầntựtự //input: dãy (a, N), X //output: Vị trí của X, -1 nếu không có intint Search(int a[], int N, int X) Search(int a[], int N, int X) {{ {{ for (int i = 0; i < N; i ++)for (int i = 0; i < N; i ++) if (a[i] == X)if (a[i] == X) return i;return i; return return 1;1; }} }} MảngMảng Thê ộtthà h hầ dữ liệThê ộtthà h hầ dữ liệ MảngMảng –– Thê m m ột thà n h p hầ n dữ liệ u Thê m m ột thà n h p hầ n dữ liệ u ầầ ầầ  BàiBài toántoán::c ầ nc ầ nthêmthêm thànhthành p h ầ n p h ầ nd ữ d ữ liệuliệuXXvàovào mảngmảng aa đangđang cócó NN thànhthành phầnphần HiHi t ờt ờ hh ầầ étét  H a iH a i t rư ờ ng t rư ờ ng h ợp h ợpc ầ nc ầ nxemxem x ét x ét ::  DãyDãy chưachưacócó thứthứ tựtự ÆÆ ThêThê XX àà ốiối ÆÆ Thê m Thê m XX v à ov à ocu ối cu ối aa  DãyDãy đãđãcócó thứthứ tựtự ÆÆ ÆÆ TìmTìm vịvị trítrí thíchthích hợp,hợp, chènchèn XXvàovào MảngMảng Thê X à ốidãThê X à ốidã Mảng Mảng –– Thê m X v à o cu ối dã y Thê m X v à o cu ối dã y 1 2 3 4 5 6 7 0 Thêm 15 vào (a, 7) 2 8 5 1 6 412 1 2 3 4 5 6 7 0 N=7N=8 a[N] = X; N ++; 15 N = 7N = 8 X MảngMảng ChèXàdãtă dầChèXàdãtă dầ Mảng Mảng –– Chè n X v à o dã y tă ng dầ n Chè n X v à o dã y tă ng dầ n 1 2 3 4 5 6 7 0 Chèn 6 vào (a, 7) pos 2 4 5 8 12 15 1 1 2 3 4 5 6 7 0 N=7N=8 6 N = 7N = 8 X Vị trí thích hợp: 4 MảngMảng ChèXàdãtă dầChèXàdãtă dầ Mảng Mảng –– Chè n X v à o dã y tă ng dầ n Chè n X v à o dã y tă ng dầ n //input: dãy (a, N) tăng dần, X //output: dãy (a, N) đã có X ở đúng vị trí voidvoid Insert(int a[], int &N, int X) Insert(int a[], int &N, int X) {{ int pos;int pos; for (pos = N; (pos>0)&&(a[posfor (pos = N; (pos>0)&&(a[pos 1]>X); pos1]>X); pos )) for (pos N; (pos>0)&&(a[posfor (pos N; (pos>0)&&(a[pos 1]>X); pos 1]>X); pos )) a[pos] = a[pos a[pos] = a[pos –– 1];1]; a[pos] = X;a[pos] = X; N ++;N ++; }} MảngMảng L ibỏ ộtthà h hầ dữ liệL ibỏ ộtthà h hầ dữ liệ MảngMảng –– L oạ i bỏ m ột thà n h p hầ n dữ liệ u L oạ i bỏ m ột thà n h p hầ n dữ liệ u  BàiBài toántoán::loạiloạibỏbỏ thànhthành phầnphầndữdữ liệuliệuXXrara khỏikhỏi mảngmảng aa đangđang cócó NN thànhthành phầnphần  HướngHướng giảigiải quyếtquyết::xácxác địnhđịnh vịvị trítrí củacủaX,X, nếunếu tìmtìm thấythấythìthì dồndồn cáccác phầnphầntửtửởở phíaphía sausau lênlên đểđể lấplấpvàovào hỗhỗ ốố 22 ờờ hh c hỗ c hỗ tr ố ngtr ố ng 22 trư ờ ngtrư ờ ng h ợp h ợp::  DãyDãy khôngkhông cócó thứthứ tựtự::lấplấpphầnphầntửtử cuốicuốilênlên ấấ ầầ  DãyDãy đãđãth ứ th ứ t ự t ự ::dờidờit ấ tt ấ tcảcả cáccác p h ầ n p h ầ nt ử t ử ởở sausau víví trítrí củacủaXXlênlên trướctrước11vịvị trítrí MảngMảng L ibỏ Xkhỏidã tăL ibỏ Xkhỏidã tă Mảng Mảng –– L oạ i bỏ X ra khỏi dã y tă ng L oạ i bỏ X ra khỏi dã y tă ng Loại5khỏi(a 8) 1 2 3 4 5 6 7 0 Loại 5 khỏi (a , 8) pos 2 4 5 7 8 8 91 1 2 3 4 5 6 7 0 N = 8N = 7 STOP 5 X Ok, found Tìm vị trí của 5 Dồn các vị trí 4, 5, 6, 7 lên MảngMảng L ibỏ Xkhỏidã tăL ibỏ Xkhỏidã tă Mảng Mảng –– L oạ i bỏ X ra khỏi dã y tă ng L oạ i bỏ X ra khỏi dã y tă ng //input: dãy (a, N), X //output: dãy (a, N) đã loại bỏ 1 thành phần X intint Remove(int a[], int &N, int X) Remove(int a[], int &N, int X) {{ int pos = Search(a, N, X);int pos = Search(a, N, X); if (pos == if (pos == 1)1) //không có X trong dãy//không có X trong dãy return 0;return 0; return 0;return 0; N N ;; for (; (pos < N); pos ++)for (; (pos < N); pos ++) a[pos] = a[pos + 1];a[pos] = a[pos + 1]; return 1;return 1; }} }} MảngMảng Sắ ếSắ ế Mảng Mảng –– Sắ p x ế p Sắ p x ế p ắắ ếế ầầ ểể  BàiBài toántoán::S ắ pS ắ px ế px ế p cáccác thànhthành p h ầ n p h ầ ncủacủa(a,(a, N ) N ) đ ể đ ể th u th u đượcđượcdãydãy tăngtăng dầndần GiảiGiải háhá TìTì áháh tiệttiệt tiêtiê tấttất ảả áá hị hhị h thếthế  GiảiGiải phá p phá p:: Tì m Tì mc á c h c á c h t r iệtt r iệt tiê u tiê u tấttất c ả c ả c á cc á cng hị c h ng hị c h thếthế củacủadãydãy ÆÆ ThuậtThuật toántoán sắpsắp xếpxếp ĐổiĐổi chổchổ trựctrực tiếptiếp ÆÆ ThuậtThuật toántoán sắpsắp xếpxếp ĐổiĐổi chổchổ trựctrực tiếptiếp MảngMảng –– Sắpxếp đổichổSắpxếp đổichổ Mảng Mảng Sắp xếp đổi chổSắp xếp đổi chổ 2 3 4 5 6 7 8 1 j 12 1 2 8 5 1 6 4 15 2 3 4 5 6 7 8 1 i i [...]... nStudents, nScores; scanf(“%d scanf(“%d %d”, &nStudents, &nScores); &nStudents, &nScores); if(nStudents if(nStudents . h thếthế  GiảiGiải phá p phá p:: Tì m Tì mc á c h c á c h t r iệtt r iệt tiê u tiê u tấttất c ả c ả c á cc á cng hị c h ng hị c h thếthế c acủadãydãy ÆÆ ThuậtThuật toántoán sắpsắp xếpxếp ĐổiĐổi chổchổ trựctr c tiếptiếp ÆÆ ThuậtThuật toántoán sắpsắp xếpxếp ĐổiĐổi chổchổ trựctr c tiếptiếp MảngMảng –– Sắpxếp. n hiê nn hiê nc ó c ó thểthể tiế p tiế p c ncậntheotheo hướnghướng::MảngMảng 22chiềuchiềulàlà mảngmảng mộtmộtchiềuchiềumàmà mỗimỗi thànhthành phầnphần c acủa nónó làlà mộtmột mảngmảng mộtmột chiềuchiều . dồndồn c cc c phầnphầntửtửởở phíaphía sausau lênlên đểđể lấplấpvàovào hỗhỗ ốố 22 ờờ hh c hỗ c hỗ tr ố ngtr ố ng 22 trư ờ ngtrư ờ ng h ợp h ợp::  DãyDãy khôngkhông c c thứthứ tựtự::lấplấpphầnphầntửtử

Ngày đăng: 22/07/2014, 16:21

TỪ KHÓA LIÊN QUAN