Bài 13 - Bài tập mảng một chiều

15 1.1K 6
Bài 13 - Bài tập mảng một chiều

Đ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

Bµi 13 Gi¸o ¸n ®iÖn tö tin häc líp 11 Bài 1. Tìm phần tử lớn nhất của dãy số nguyên (với n 250 và A[i] 500 ), nếu dãy có nhiều phần tử cùng giá trị thì đ a ra chỉ số của phần tử lớn nhất đầu tiên. Hãy xác định Input, Output và nêu thuật toán tìm Max? * INPUT: Nhập số nguyên d ơng n và dãy n số nguyên d ơng a 1 ,a 2 , ,a n . * OUTPUT: Chỉ số và giá trị của phần tử lớn nhất trong dãy. Qu¶ nµy lín nhÊt Qu¶ nµy míi lín nhÊt å! Qu¶ nµy lín h¬n T×m ra qu¶ lín nhÊt råi! thuËt to¸n t×m max MAX 1. NhËp n vµ d·y a 1 , ,a n ; Write(‘ Nhap vao so luong phan tu:’); Readln(n); For i:=1 to n do begin write(‘ Phan tu thu ’ ,i, ’ = ’); readln(a[i]) end; 2. Max ← a1 ; i ← 1; Max:=a[1]; csmax:=1; For i :=2 to n do IF a[i]>max then begin max:=a[i]; csmax:=i; end; 3. NÕu i>N ® a ra MAX vµ chØ sè i => KÕt thóc; 4. NÕu a[i]>max th× max←a[i], i ← i+1 => quay l¹i b íc 3. Program Tim_Max; Uses crt; Type dayso = Array[1 250] of integer; Var A : dayso ; i,n,max,csmax : integer; BEGIN Clrscr; write(‘ Nhap vao so phan tu cua day so : ’) ; readln(n) ; For i := 1 to n do Begin write(‘ Phan tu thu ‘,i,’ = ‘) ; readln(A[i]) ; End; Max := A[1[ ; csmax :=1 ; For i := 1 to n do If (A[i]>max) Then begin max := a[i]; csmax=i; end; Writeln(‘ Gia tri cua phan tu Max : ’,Max) ; Writeln(‘ Chi so cua phan tu Max : ’, csmax) ; Readln ; END. Nhap vao so phan tu cua day so : 7 Phan tu thu 1 = 15 20 16 25 18 12 19 Gia tri cua phan tu Max : 25 Chi so cua phan tu Max : 4 Ch ¬ng tr×nh ch¹y vµ cho kÕt qu¶ nh sau: Phan tu thu 2 = Phan tu thu 3 = Phan tu thu 4 = Phan tu thu 5 = Phan tu thu 6 = Phan tu thu 7 = Bài 2. Nhập vào một dãy số nguyên, sắp xếp dãy theo trình tự không giảm. * INPUT: Nhập số nguyên d ơng n và dãy n số nguyên d ơng a 1 ,a 2 , ,a n . * OUTPUT: Dãy số đ ợc sắp xếp theo trình tự không giảm. Các em hãy cho biết để giải bài toán trên, ở lớp 10 chúng ta dùng thuật toán gì? Là Thuật toán tráo đổi kiểu nổi bọt từ trên xuống! 3 2 9 7 6 Cho dãy số sau: 3 2 9 7 6 Giả sử: Mỗi phần tử đ ợc xem nh một bọt n ớc; Lợt1: i chạy từ đầu dãy đến vị trí[cuốidãy-1] Khia[i]>a[i+1]tứclàbọtn ớc bên trên nặng hơn bọt nớc bên dới => bọt nớc trên chìm xuống và bọt n ớcbêndớinổilên(tráo đổi vị trí). Sau lợt thứ nhất, bọt nớc có trọng lợng lớn nhất sẽ chìmxuốngđáy. Trọng l ợng của bọt n ớc thứ i là giá trị của A[i]. Lợt2: i chạy từ đầu dãy đến vị trí [cuối dãy - 2] (bỏ qua phần tử cuối). Saulợtthứhaibọtnớccó trọng lợng lớn thứ hai nằm sát trên bọt nớc lớn nhất. Quá trình duyệt, tráo đổi đợclặp đi lặp lại cho đến khi chỉ còn duyệt hai phần tử và thu đợc dãy khônggiảm. Số phần tử ở các l ợt duyệt (j) sẽ giảm từ n xuống hai phần tử. Tại mỗi l ợt duyệt: - Cho i chạy từ 1 đến số phần tử -1, nếu A[i]>A[i+1] thì tráo đổi vị trí A[i] và A[i+1] thông qua biến trung gian (Tg). Các em hãy cho biết trong Pascal nhận xét 1 đ ợc thể hiện bằng lệnh gì ? 1 For j := n downto 2 do 2 For i := 1 to j-1 do IF A[i]>A[i+1] then Tg := A[i]; A[i] := A[i+1]; A[i+1]:=Tg; Begin end; [...]... readln(A[i]); end; For j := n downto 2 do For i:= 1 to j-1 do If A[i]>A[i+1] Then begin Tg := A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; end; Writeln( Day so duoc sap xep ); For i:=1 to n do Write(A[i]:5); Readln; END Khai báo mảng 1 chiều Nhập mảng 1 chiều Xử lí mảng bằng thuật toán nổi bọt In kết quả Bài 3 Nhập vào một dãy A tăng gồm N (N 250) số nguyên dơng khác nhau và một số k Cho biết vị trí của số hạng có giá trị... Vậy chỉ số cần tìm là i = 6 Vì dãy A là dãy tăng, ta thực hiện thu hẹp nhanh phạm vi tìm kiếm bằng cách so sánh k với A[giua] và xét các trờng hợp: - A[giua]=k tìm thấy chỉ số giữa và kết thúc; - A[giua]>k Thu hẹp về phía bên trái (Cuối = Giữa -1 ); - A[giua] . sánh k với A[giua] và xét các tr ờng hợp: - A[giua]=k tìm thấy chỉ số giữa và kết thúc; - A[giua]>k Thu hẹp về phía bên trái (Cuối = Giữa -1 ); - A[giua]<k Thu hẹp về phía bên phải (Đầu. to j-1 do If A[i]>A[i+1] Then begin Tg := A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; end; Writeln(‘ Day so duoc sap xep ’); For i:=1 to n do Write(A[i]:5); Readln; END. Bài 3. Nhập vào một dãy. giải bài toán trên, ở lớp 10 chúng ta dùng thuật toán gì? Là Thuật toán tráo đổi kiểu nổi bọt từ trên xuống! 3 2 9 7 6 Cho dãy số sau: 3 2 9 7 6 Giả sử: Mỗi phần tử đ ợc xem nh một

Ngày đăng: 19/07/2014, 19:01

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

Tài liệu cùng người dùng

Tài liệu liên quan