Thuật toán sắp xếp nổi bọt (bubble sort) trong Pascal

Lập trình Pascal

Trong thuật toán này, chúng ta sử dụng hai vòng lặp lồng nhau để so sánh từng cặp phần tử kế tiếp của mảng. Nếu phần tử đứng trước lớn hơn phần tử đứng sau, chúng ta hoán đổi chúng. Điều này đảm bảo rằng các phần tử lớn hơn sẽ “nổi” lên đầu mảng, giống như bọt nổi lên trên bề mặt nước.

Thuật toán tiếp tục lặp lại việc so sánh và hoán đổi cho đến khi không còn cặp phần tử nào cần hoán đổi nữa, tức là mảng đã được sắp xếp.

Chú ý rằng chúng ta truyền mảng vào hàm bằng cách sử dụng từ khóa var, điều này có nghĩa là mảng được truyền bởi tham chiếu và sẽ được thay đổi bên trong hàm.

procedure bubbleSort(var arr: array of Integer);
var
  i, j, temp: Integer;
begin
  for i := Length(arr) - 1 downto 1 do
  begin
    for j := 0 to i - 1 do
    begin
      if arr[j] > arr[j+1] then
      begin
        temp := arr[j];
        arr[j] := arr[j+1];
        arr[j+1] := temp;
      end;
    end;
  end;
end;

Dưới đây là một ví dụ cụ thể về cách sử dụng thuật toán sắp xếp nổi bọt trong Pascal:

program BubbleSortExample;

const
  SIZE = 10;

type
  IntArray = array[0..SIZE-1] of Integer;

var
  arr: IntArray;
  i: Integer;

procedure bubbleSort(var arr: IntArray);
var
  i, j, temp: Integer;
begin
  for i := Length(arr) - 1 downto 1 do
  begin
    for j := 0 to i - 1 do
    begin
      if arr[j] > arr[j+1] then
      begin
        temp := arr[j];
        arr[j] := arr[j+1];
        arr[j+1] := temp;
      end;
    end;
  end;
end;

begin
  // Khởi tạo mảng ngẫu nhiên
  Randomize;
  for i := 0 to SIZE-1 do
  begin
    arr[i] := Random(100);
    Write(arr[i], ' ');
  end;
  Writeln;

  // Sắp xếp mảng và in kết quả
  bubbleSort(arr);
  for i := 0 to SIZE-1 do
  begin
    Write(arr[i], ' ');
  end;
  Writeln;
end.

Trong ví dụ này, chúng ta khai báo một mảng arr có kích thước SIZE và loại IntArray, được định nghĩa trước đó. Chúng ta cũng khai báo một hàm bubbleSort để sắp xếp mảng theo thuật toán sắp xếp nổi bọt.

Trong phần chính của chương trình, chúng ta sử dụng hàm Randomize để khởi tạo các phần tử của mảng ngẫu nhiên từ 0 đến 99. Sau đó, chúng ta in mảng ban đầu và sử dụng hàm bubbleSort để sắp xếp mảng. Cuối cùng, chúng ta in kết quả sau khi sắp xếp.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *