Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    4

    [help] lập trình sắp xếp dãy số

    anh chị nào biết bao em với! cho em xin code sắp xếp dãy số do người nhập vào!

  2. #2
    Ngày tham gia
    Feb 2016
    Bài viết
    24
    Em tìm trong quyển ebook của thầy Lê Minh Hoàng là có rất nhiều mà, sao phải lên đây xin. Mà anh nghĩ em nên tự viết cũng được, code đó không khó.

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    Trả lời

    Nói khó thì không khó mà dễ cũng chẳng dễ. Cái này trong sách tin học 11 bài thực hành mảng 2 chiều có ghi rõ.
    uses crt;
    const max=100;
    type mang = array[1..max] of integer;
    var n,i,j,y,t,dem: integer; a: mang;
    begin
    clrscr; {lam sach mang hinh}; dem:=0;
    write('Nhap n ');
    readln(n);{n là số phần tử của mảng}
    for i:=1 to n do begin write('Nhap phan tu thu ',i,':'); readln(a);end; {Nhập phần tử cho mảng}
    writeln;{xuống dòng}
    for j:=n downto 2 do
    for i:=1 to j-1 do if a>a[i+1] then
    begin {so sánh a với tất cả các phần tử trong hàng sau đó nếu lớn hơn thì tráo đổi vị trí, sau khi kết thúc ta sẽ được số lớn nhất cuối dãy, ... cứ lặp và ta sẽ được dãy đã sắp xếp.}
    t:= a; a:=a[i+1]; a[i+1]:= t;
    end;
    writeln('Day da duoc sap xep ');
    for i:=1 to n do write(a:7);
    dem:=dem+1;
    if (dem mod 10) = 0 then writeln; {Xuống dòng khi viết được 10 phần tử};
    readln
    end.
    Ko phải là nổ quá, nhưng mình đang đi thi tỉnh môn lập trình pascal này.:emlaugh::emlaugh::emlaugh:
    Những phần trong cặp dấu {} là chú thích, nhớ đừng viết vào chương trình nha, ko thì thầy cô cú đầu đó![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Chú ý nếu bạn muốn copy bỏ trong pascal luôn khỏi phải gõ lại thì copy paste vào notepad, save lại với tên dien dan tin hoc.pas rồi save vào thư mục gốc của pascal hoặc đưa đường dẫn cho pascal, rồi mở ra Ctrl F9 là ok. Mình đã chạy thử rồi!
    Chúc bạn học môn tin cũng giỏi như mình [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hoangtungoc
    Nói khó thì không khó mà dễ cũng chẳng dễ. Cái này trong sách tin học 11 bài thực hành mảng 2 chiều có ghi rõ.
    Ko phải là nổ quá, nhưng mình đang đi thi tỉnh môn lập trình pascal này.:emlaugh::emlaugh::emlaugh:
    Những phần trong cặp dấu {} là chú thích, nhớ đừng viết vào chương trình nha, ko thì thầy cô cú đầu đó![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Chú ý nếu bạn muốn copy bỏ trong pascal luôn khỏi phải gõ lại thì copy paste vào notepad, save lại với tên dien dan tin hoc.pas rồi save vào thư mục gốc của pascal hoặc đưa đường dẫn cho pascal, rồi mở ra Ctrl F9 là ok. Mình đã chạy thử rồi!
    Chúc bạn học môn tin cũng giỏi như mình [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG][IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Ghê chưa [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]. Chúc bạn có kỳ thi ngon lành nha!
    Sắp xếp thì nhiều dạng, dùng nhiều nhất mình thấy có 2 dạng:
    + Bubblesort: Như trên.
    + Quicksort: Bạn tìm trong thư viện thủ tục của anh Trường - Happysoftgroup, phần mình viết.
    Dùng khi nào????
    + Bubblesort: Dùng khi bạn muốn sắp xếp theo một chiều thứ tự từ điển tăng (giảm) dần nhưng các phần tử bằng nhau gần nhau sẽ không hoán đổi vị trí. Lợi ích: dùng sắp xếp cho bài toán 2 3 trường trở lên, muốn viết một cách ngắn gọn, bớt thời gian vào phần cài đặt và giới hạn cho phép.
    + Quicksort: Các trường hợp còn lại[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]. Khi dữ liệu vào lớn, dùng bbsort có khả năng hoặc chắc chắn toi... Khi đó quicksort tỏ ra là một công cụ mạnh. ^^
    @ginta: <ngoài lề xíu [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]> anh thi đợt rồi tốt không?

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    asdf

    Mã:
    program sapxep_va_timkiem;
    type
    mang = array [1..1000] of integer;
    var
    i,j,n,m,chon,x,lo,hi:integer;
    a:array [1..1000] of integer;
    {-----------------}
    procedure Hoanvi;
    var
    tam:byte;
    begin
    tam:=m;
    m:=n;
    n:=tam;
    end;
    procedure Bubble;
    var
    x,i,j: integer;
    begin
    for i:=2 to n do
    for j:=n downto i do
    if a[j]<a[j-1] then
    begin
    x:=a[j-1];
    a[j-1]:=a[j];
    a[j]:=x;
    end;
    end;
    procedure Shakes;
    var
    x: integer;
    l,r: word;
    begin
    l:=2;
    r:=n;
    for i:=l to r do
    begin
    for j:=r downto i do
    if a[j]<a[j-1] then
    begin
    x:=a[j-1];
    a[j-1]:=a[j];
    a[j]:=x;
    end;
    l:=j;
    for j:=i to r-1 do
    if a[j+1]<a[j] then
    begin
    x:=a[j+1];
    a[j+1]:=a[j];
    a[j]:=x;
    end;
    r:=j;
    end;
    end;
    procedure Select;
    var
    x,min: integer;
    i,j: word;
    begin
    for i:=1 to n-1 do
    begin
    min:=i;
    for j:=i+1 to n do
    if a[min]>a[j] then
    min:=j;
    x:=a[min];
    a[min]:=a[i];
    a[i]:=x;
    end;
    end;
    procedure Insert;
    var
    x: integer;
    begin
    for i:=2 to n do
    begin
    x:=a[i]; j:=i-1;
    while (a[j]>a[i]) do
    begin
    a[j+1]:=a[j];
    j:=j-1;
    end;
    a[j+1]:=x;
    end;
    end;
    function Tim_Tuan_tu: integer;
    begin
    a[n+1]:=x;
    i:=1;
    while (a[i]<>x) do inc(i);
    if i<n+1 then
    Tim_tuan_tu:=i
    else
    Tim_tuan_tu:=-1;
    end;
    procedure Saptang;
    var
    j: byte;
    begin
    for i:=1 to n-1 do
    for j:=i+1 to n do
    if a[i]>a[j] then
    Hoanvi;
    readln
    end;
    function Tim_Nhi_phan: integer;
    var
    l,r: integer;
    begin
    l:=1;
    r:=n;
    while (l<=r) do
    begin
    i:=(l+r) div 2;
    if a[i]=x then
    begin
    Tim_nhi_phan:=i;
    exit;
    end;
    if a[i]<x then l:=i+1
    else r:=i-1;
    end;
    Tim_nhi_phan:=-1;
    end;
    procedure Nhap;
    begin
    write(' Nhap so phan tu mang: ');
    readln(n);
    write(' Nhap mang: ');
    for i:=1 to n do
    read(a[i]);
    write(' Nhap x: ');
    readln(x);
    end;
    procedure Xuat;
    begin
    for i:=1 to n do
    write(a[i],' ');
    readln;
    end;
    procedure b;
    begin
    Nhap;
    Bubble;
    Xuat;
    end;
    procedure s;
    begin
    Nhap;
    Shakes;
    Xuat;
    end;
    procedure se;
    begin
    Nhap;
    Select;
    Xuat;
    end;
    procedure ine;
    begin
    Nhap;
    Saptang;
    Xuat;
    end;
    procedure tvn;
    begin
    Nhap;
    writeln(' Tim Tuan Tu : Vi tri phan tu bang x: ',Tim_tuan_tu);
    write(' Mang la: ');
    Xuat;
    Saptang;
    writeln;
    write(' Mang sau khi sap tang: ');
    Xuat;
    writeln(' Tim Nhi Phan: Vi tri phan tu bang x: ',Tim_nhi_phan);
    readln;
    end;
    Procedure iqk;
    Const
    Max=1000;
    Type
    Mang = Array[1..Max] Of Integer;
    Var
    a:Mang;
    i:Integer;
    {-------------------}
    Procedure Hoanvi(Var m,n : Integer);
    Var
    Tam:Byte;
    Begin
    Tam:=m;
    m:=n;
    n:=Tam;
    End;
    Procedure QuickSort(Var A: Mang; Lo,Hi: Integer);
    Procedure Sort(Left, Right:Integer);
    Var
    i,j,x:Integer;
    Begin
    i:=Left;
    j:=Right;
    x:=a[(Left + Right) Div 2];
    Repeat
    While a[i] < x Do
    Inc(i);
    While x < a[j] Do
    Dec(j);
    If i <=j Then
    Begin
    Hoanvi(a[i],a[j]);
    Inc(i);
    Dec(j);
    End;
    Until i > j;
    If Left < j Then
    Sort(Left,j);
    If i < Right Then
    Sort(i,Right);
    End;
    Begin
    Sort(Lo,Hi);
    End;
    {-------------------}
    BEGIN
    Writeln('GIAI THUAT QUICKSORT');
    Writeln('--------------------');
    Writeln;
    Nhap;
    Saptang;
    Xuat;
    Writeln;
    Readln
    END;
    {-----------------}
    Begin
    repeat
    writeln('°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°');
    writeln('so 1 la tim tuan tu va tim nhi phan');
    writeln;
    writeln('so 2 la insert sort');
    writeln;
    writeln('so 3 la bubble sort');
    writeln;
    writeln('so 4 la select sort');
    writeln;
    writeln('so 5 la shakes sort');
    writeln;
    writeln('so 6 la quick sort');
    writeln;
    writeln('-nhap kieu chuong trinh muon su dung(nhap 10 de ket thuc):');
    readln(chon);
    case chon of
    1: tvn;
    2: ine;
    3: b;
    4: se;
    5: s;
    6: iqk
    end;
    writeln;
    until chon=10;
    readln;
    end.
    :book:
    đây là kết quả của việc tự học.
    tớ cũng từng thi tỉnh rồi nhưng ko trúng.
    chúc cậu vui vẻ

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •