Sắp Xếp Mảng [Archive] - Diễn Đàn Tin Học
Có thể bạn quan tâm
Diễn Đàn Tin Học > Lập trình > Các ngôn ngữ lập trình > Pascal/Delphi/Kylix > Sắp xếp mảng PDA
View Full Version : Sắp xếp mảng
minhhuu21-04-2003, 08:17Có ai giỏi về sắp xếp mảng hai chiều như sắp xếp thành đường "zíchzắc", sắp xếp theo chiều vòng, sắp xếp nhiwều kiểu nữa .... thì chỉ giùm nha. Mình biết nhưng phải tìm công thức mệt quá Nicky22-04-2003, 20:02Mấy cái đó trong sách về Pascal có nhiều lắm. minhhuu24-04-2003, 09:11Bạn làm ơn chỉ cụ thể là sách nào real_time27-04-2003, 09:29Mình chưa tìm ra sách nào viết cả? Nhưng mình có phương pháp thế này bạn xem có được ko nhé? Đầu tiên bạn sắp xếp thứ tự tăng dần hoặc giảm dần trên toàn mảng 2 chiều đó đi Bước tiếp theo là các hàng chẵn bạn sẽ đổi ngược lại cho nhau. Thế là được đươc thôi mà! chúc bạn thành công. minhhuu01-05-2003, 07:45Mình có làm bài này rồi nhưng phải có công thức rắc rối quá. Còn làm như cách của bạn thì bị tràn số Shinichi Heroine01-05-2003, 20:51Bạn khai báo thế nào mà bị tràn ? monkeyvu05-05-2003, 07:56He he ,mấy bài này chỉ có cách là tìm công thức thôi bạn ơi!!!! I_Love_Tra05-05-2003, 09:25Bạn muốn sắp xếp mảng 2 chiều theo các đường ziczac, nhiểu vòng thì thử tìm quyển: Những đề thi học sinh giỏi cấp quốc gia năm 2000, Những bài toán Pascal nâng cao thử xem. Hình như có đấy. Mình nhớ mang mang la như vậy =================================== Sun for day Moon for Night Gun for War Rose for Love .... And you for me minhhuu07-05-2003, 06:19Chúng ta hãy tìm cách sắp xếp mà không cần công thức đi, Ai có bài trước thì đưa lên nha. btkiet07-05-2003, 09:29Mấy bài này dễ ợt, đầu tiên bạn chuyển từ mảng 2 chiều sang 1 chiều, sắp xếp mảng 1 chiều theo thứ tự tăng dần, sau đó chuyển từ mảng 1 chiều sang mảng 2 chiều. Quan trọng và khó nhất là chổ chuyển từ mảng 1 chiều sang mảng 2 chiều theo thứ tự sao cho đúng với hình ziczac hay xoắn ốc thôi, điều này được thực hiện với vòng lặp kết hợp if then là được, không cần tìm công thức đâu. Để tôi tìm lại source rồi post lên sau, lâu quá nên không biết đâu rồi. btkiet07-05-2003, 16:05Source đây. uses crt; const max=50; type mang1=array[1..max*max] of word; mang2=array[1..max,1..max] of word; var a:mang2;b:mang1; n:byte; procedure taomang; var i,j:byte;k:word; begin clrscr; randomize; write(' Nhap n= ');readln(n); k:=1; for i:=1 to n do for j:=1 to n do begin a[i,j]:=random(1000); b[k]:=a[i,j]; inc(k); end; end; procedure xuat; var i,j:byte; begin for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; readln; end; procedure qs(l,r:byte); var i,j:byte;x,t:word; begin i:=l;j:=r; x:=b[(i+j) div 2]; repeat while b[i]<x do inc(i); while b[j]>x do dec(j); if i<=j then begin t:=b[i]; b[i]:=b[j]; b[j]:=t; inc(i); dec(j); end; until i>j; if i<r then qs(i,r); if j>l then qs(l,j); end; procedure bt; var i,j:byte;t:word; begin t:=1; for i:=1 to n do for j:=1 to n do begin a[i,j]:=b[t]; inc(t); end; end; procedure ziczac_h; var i,j:byte;t:word; begin t:=1; for i:=1 to n do for j:=1 to n do begin if odd(i) then a[i,j]:=b[t] else a[i,n-j+1]:=b[t]; inc(t); end; end; procedure ziczac_c; var i,j:byte;t:word; begin t:=1; for j:=1 to n do for i:=1 to n do begin if odd(j) then a[i,j]:=b[t] else a[n-i+1,j]:=b[t]; inc(t); end; end; procedure ziczac_d; var k,t:word; i,j,m,h:byte; begin h:=0;t:=0; for i:=2 to 2*n do begin if i>n then begin k:=i-n; m:=n; end else begin k:=1; m:=i-1; end; case h of 0: begin for j:=k to m do begin inc(t); a[i-j,j]:=b[t]; end; h:=1; end; 1: begin for j:=m downto k do begin inc(t); a[i-j,j]:=b[t]; end; h:=0; end; end; end; end; procedure xoan_x; var c1,c2,h1,h2,i:byte;t:word; begin t:=0; c1:=1;c2:=n; h1:=2;h2:=n; repeat for i:=c1 to c2 do begin inc(t); a[h1-1,i]:=b[t]; end; dec(c2); for i:=h1 to h2 do begin inc(t); a[i,c2+1]:=b[t]; end; dec(h2); for i:=c2 downto c1 do begin inc(t); a[h2+1,i]:=b[t]; end; inc(c1); for i:=h2 downto h1 do begin inc(t); a[i,c1-1]:=b[t]; end; inc(h1); until t>=n*n; end; procedure xoan_n; var c1,c2,h1,h2,i:byte;t:word; begin t:=0; c1:=1;c2:=n; h1:=2;h2:=n; repeat for i:=c2 downto c1 do begin inc(t); a[h1-1,i]:=b[t]; end; inc(c1); for i:=h1 to h2 do begin inc(t); a[i,c1-1]:=b[t]; end; dec(h2); for i:=c1 to c2 do begin inc(t); a[h2+1,i]:=b[t]; end; dec(c2); for i:=h2 downto h1 do begin inc(t); a[i,c2+1]:=b[t]; end; inc(h1); until t>=n*n; end; BEGIN clrscr; taomang;xuat; qs(1,n*n); bt;xuat; ziczac_h;xuat; ziczac_c;xuat; ziczac_d;xuat; xoan_x;xuat; xoan_n;xuat; END. minhhuu12-05-2003, 06:52Xin cam on nhieu, rat nho on ban. Tim duoc bai nay mung qua Powered by vBulletin® Version 4.2.0 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.Từ khóa » Cách Sắp Xếp Mảng 2 Chiều Pascal
-
Thuật Toán Sắp Xếp Qua Lại Mảng Hai Chiều Trong Pascal - Ôn Thi HSG
-
Sắp Xếp Zích Zắc Mảng Hai Chiều - Code Free Pascal - Ôn Thi HSG
-
Sắp Xếp Mảng 2 Chiều Tăng Dần Trái - Phải, Trên - Dưới - Thiệu Mao
-
Viết Chương Trình Sắp Xếp Mảng 2 Chiều Theo Các Yêu Cầu Sau - Hoc24
-
Bài Tập Sắp Xếp Mảng 2 Chiều | Cộng đồng Học Sinh Việt Nam
-
2022 Bài Tập Pascal: Phần Mảng 2 Chiều - Duy Pets
-
Sắp Xếp Mảng Hai Chiều Trong Pascal - Code9.Info
-
Bài 57. Cách Sắp Xếp Mảng Hai Chiều Tăng Dần Hoặc Giảm Dần
-
Cách Nhanh Có Thật Sự Nhanh Trong Sắp Xếp Mảng 2 Chiều
-
Bài Tập Pascal Về Mảng 2 Chiều - 123doc
-
LTC 57. Cách Sắp Xếp Mảng Hai Chiều Tăng Dần Hoặc Giảm Dần
-
Lập Trình C: Cách Sắp Xếp Mảng 2 Chiều | V1Study
-
Học Pascal Cùng J[p6] - THPT Quang Hà