Hướng dẫn cách sắp xếp mảng Java với vòng lặp For

Sắp xếp mảng Java với vòng lặp For là một khái niệm nâng cao và quan trọng. Mà bất kỳ ai muốn học lập trình Java đều phải nắm được. Thực tế thì mảng sẽ khó hiểu hơn đặc biệt với những bạn mới bắt đầu. Tuy nhiên, nó lại cần thiết cho lập trình Java. Vậy cách sắp xếp mảng Java này như thế nào thì cùng Box.edu tìm hiểu thêm nhé!

Mục lục bài viết

Sắp xếp mảng Java với vòng lặp For

sap-xep-mang-java-voi-vong-lap-for.jpg

Sắp xếp mảng Java với vòng lặp For

Với những bạn đã quen với ngôn ngữ lập trình C thì sẽ dễ dàng tiếp cận với Java hơn. Đặc biệt là vòng lặp For. Vòng lặp for thường được sử dụng với mảng kiểu nguyên thủy. Có chứa giá trị chuỗi hoặc số nguyên. Bạn sử dụng các vòng lặp này khi cần thao tác hoặc đọc từng giá trị trong mảng. Vòng lặp for là một phần của hầu hết mọi chương trình Java. Và bạn được đảm bảo sử dụng chúng khi bắt đầu sự nghiệp lập trình của mình.

Tìm hiểu về sắp xếp bong bóng

Điều đầu tiên mà bạn cần làm cho việc sắp xếp bong bóng chính là một mảng các số nguyên. Cụ thể thì bạn sẽ có hai hoặc hàng nghìn số nguyên để sắp xếp. Với ví dụ này, danh sách năm số nguyên được lưu trữ trong một mảng có tên là “số”. Đồng thời đoạn mã sau sẽ chỉ cho bạn cách tạo một mảng số nguyên trong Java:

int [] số = {5, 8, 14, 1, 5678};

Phần đầu tiên của dòng mã này là kiểu dữ liệu mảng. Phép gán kiểu dữ liệu “int []” cho trình biên dịch Java biết rằng bạn đang thiết lập một mảng số nguyên đơn chiều. Dấu ngoặc được nối vào kiểu dữ liệu để chỉ ra rằng đó là một biến mảng. Khi đó bạn có thể làm điều này với bất kỳ kiểu dữ liệu nguyên thủy nào. Ví dụ: sử dụng “string []” và nó cho biết rằng bạn đang xác định một mảng các chuỗi.

Tiếp theo, bạn cần thiết lập một biến tạm thời. Biến tạm thời được sử dụng để “di chuyển” dữ liệu và chuyển giá trị từ vị trí này sang vị trí khác trong quá trình sắp xếp bong bóng. Điều này sẽ được giải thích rõ hơn ở phần sau. Đoạn mã sau tạo một biến tạm thời cho sắp xếp bong bóng của bạn:

int tempVar;

Mẫu For Loop và cách thiết lập

mau-for-loop-va-cach-thiet-lap.jpg

Mẫu For Loop và cách thiết lập

Logic chính trong việc sắp xếp mảng Java với vòng lặp For. Được thiết lập bằng cách sử dụng hai vòng lặp for. Vòng lặp for đầu tiên đi qua từng chỉ mục trong mảng số nguyên. Vòng lặp for thứ hai được nhúng so sánh giá trị chỉ mục hiện tại với tất cả các giá trị khác trong mảng. Nghĩa là vòng lặp thứ hai được nhúng này sẽ thực hiện “sôi sục”. Và di chuyển các giá trị lên mảng để sắp xếp danh sách các số nguyên.

Để bắt đầu, trước tiên bạn thiết lập vòng lặp “chính” của mình. Đoạn mã dưới đây sẽ tạo mẫu cho vòng lặp chính:

for (int i = 0; i < numbers.length; i++)
{
}

Vòng lặp for này có ba phần được phân tách bằng dấu chấm phẩy. Đầu tiên bạn cần xác định số gia tăng (trong trường hợp này là “i”) được sử dụng để xoay vòng qua từng chỉ mục trong mảng. Mảng Java được bắt đầu bằng chỉ số 0.

Vì vậy số gia tăng của bạn phải luôn được khởi tạo bằng 0. Phần thứ hai được dùng để xác định số lần lặp bạn muốn thực hiện trong vòng lặp for. Cú pháp “number.length” trả về tổng số lượng số nguyên được lưu trữ trong mảng. Cuối cùng, phần cuối cùng là toán tử tăng dần. Cú pháp “i ++”. Là cách viết tắt của Java để tăng số nguyên lên 1.

Bây giờ bạn cần mảng nhúng. Mảng được nhúng cần có một số gia tăng duy nhất cho vòng lặp for bao quanh của nó. Trong ví dụ này, chúng tôi sẽ sử dụng “j” làm số gia tăng. Thêm mã sau vào vòng lặp for đầu tiên của bạn cụ thể:

for (int i = 0; i < numbers.length; i++)
{
       for(int j = 0; j < numbers.length; j++)
       {
       }
}

Trong đoạn mã trên, vòng lặp for “j” đi qua từng phần tử mảng cũng như vòng lặp for bao quanh “i”. Tất cả logic nghiệp vụ và thao tác sắp xếp bong bóng xảy ra trong vòng lặp for “j” được nhúng. Lý do cho vòng lặp này là bạn cần so sánh từng giá trị trong chỉ mục với các giá trị khác. Khi bạn so sánh từng giá trị, số thấp nhất trong thứ tự sắp xếp. Sẽ di chuyển lên trên mảng, từng cái một trong vòng lặp for “j” được nhúng.

Bit đầu tiên của logic là so sánh giá trị chỉ mục hiện tại từ vòng lặp “i” với giá trị vòng lặp “j” hiện tại. Nếu giá trị của vòng lặp “j” nhỏ hơn giá trị của chỉ số “i”. Thì bạn cần chuyển đổi các giá trị. Khái niệm này khó hiểu. Nhưng nó sẽ dễ hiểu hơn khi bạn nhìn thấy mã. Hiện tại, bạn cần thêm câu lệnh if Java vào mã vòng lặp “j” được nhúng. Thêm mã sau vào sắp xếp bong bóng của bạn:

for (int i = 0; i < numbers.length; i++)
{
       for(int j = 0; j < numbers.length; j++)
       {
                    if(numbers[i] > numbers[j + 1])
                    {
                    }
       }
}

Lưu ý câu lệnh “if” so sánh chỉ số hiện tại trong vòng lặp for đầu tiên. Với giá trị “tiếp theo” của vòng lặp j. Trong đó “J + 1” cho phép bạn so sánh số hiện tại với số tiếp theo trong vòng lặp. Lý do thêm “+ 1” vì bạn muốn so sánh tất cả các số ngoại trừ số được giữ trong chỉ mục “i”. Do đó, bạn đang so sánh tất cả các số ngoại trừ số bạn đang cố gắng làm bong bóng.

Trong câu lệnh “if”, bạn thực hiện sắp xếp bong bóng thực tế. Câu lệnh “if” chỉ thực thi nếu số trong chỉ mục tiếp theo nhỏ hơn số hiện tại. Đây là nơi bạn triển khai biến tạm thời mà bạn đã xác định trước đó với mảng số nguyên. Thêm những mã sau để hoàn thành việc sắp xếp bong bóng:

for (int i = 0; i < numbers.length; i++)
{
       for(int j = 0; j < numbers.length; j++)
       {
                if(numbers[i] > numbers[j + 1])
                {
                            tempVar = numbers [j + 1];
                            numbers [j + 1]= numbers [i];
                            numbers [i] = tempVar;
                }
        }
}

Trong câu lệnh if, bây giờ bạn có 3 dòng mã. Những dòng mã này có những khái niệm khó, nhưng cũng dễ dàng khi bạn đọc và hiểu mã.

Dòng đầu tiên đặt số nhỏ hơn (số [j + 1]) trong biến tạm thời tempVar. Lý do là vì bạn cần di chuyển số cao hơn xuống và làm như vậy mà không lưu nó vào một biến tạm thời sẽ ghi đè lên số đó và bạn sẽ bị mất nó. 

Dòng thứ hai trong câu lệnh if di chuyển giá trị số nguyên lớn hơn đến vị trí tiếp theo trong mảng. Giá trị này sẽ ghi đè lên những gì ở vị trí chỉ mục tiếp theo (số [j + 1]), vì số nhỏ hơn đã được lưu trữ trong biến tạm thời trong dòng mã trước đó. Đây là lý do chính cho biến tạm thời.

Cuối cùng, số nhỏ hơn được lưu trữ trong chỉ mục hiện tại bằng cách sử dụng biến tempVar. Điều này làm chuyển vị trí của số nhỏ hơn ở chỉ mục thấp hơn, tạo ra một mảng tăng dần. Ví dụ: nếu số được lưu trong các số [i] là 4 và số được lưu trong các số [j + 1] là 3, thì bit mã này sẽ chuyển vị trí và đặt số nguyên 3 vào các số [i] và đặt số nguyên 4 bằng số [j + 1].

Ngoải ra bạn cũng có thể sử dụng cách sắp xếp bong bóng này để tạo danh sách các số nguyên theo thứ tự giảm dần. Logic hơi khác một chút, nhưng đây là kiểu sắp xếp bong bóng để tạo danh sách giảm dần:

for (int i = 0; i < numbers.length; i++)
{
       for(int j = 0; j < numbers.length; j++)
       {
                if(numbers[i] < numbers[j + 1])
                {
                            tempVar = numbers [j + 1];
                            numbers [j + 1]= numbers [i];
                            numbers [i] = tempVar;
                }
       }
}

Lưu ý rằng có một thay đổi: nếu câu lệnh if có dấu nhỏ hơn thay vì dấu lớn hơn thì phần còn lại của logic và cú pháp là như nhau. Khi bạn chuyển sang một dấu nhỏ hơn, số nguyên ở vị trí hiện tại chỉ nổi lên khi nó nhỏ hơn vị trí tiếp theo. Về cơ bản, bạn chỉ cần đảo ngược phân loại bong bóng.

Nếu bạn đang thử nghiệm với sắp xếp mảng Java với vòng lặp For, bạn có thể xác minh rằng bạn đã thực hiện đúng bằng cách in ra mảng số. Bạn cũng có thể xem qua mã, nhưng việc in nó ra sẽ giúp bạn xem kết quả nhanh chóng mà không cần sử dụng trình gỡ lỗi. Đoạn mã sau sẽ chỉ cho bạn cách in ra mảng mới được sắp xếp:

for (int i = 0; i <number.length; i ++)
{
         System.out.println (số [i] .toString ());
}

Đoạn mã Java trên in các số ra màn hình, vì vậy bạn có thể xác minh rằng tất cả các số đã được sắp xếp hoàn toàn. Về mặt kỹ thuật, bạn có thể in ra mảng bằng cách sử dụng các tham chiếu tĩnh đến các chỉ mục trong mảng, nhưng mã này hiệu quả hơn. Ngoài ra, nếu bạn không biết kích thước của mảng, mã này còn cho phép bạn lặp lại và in ra một mảng có một giá trị hoặc nhiều giá trị khác.

Để nhận mã đầy đủ, đây là mã Java từ đầu đến cuối:

int[] numbers = { 5, 8, 14, 1, 5678 };
int tempVar;
for (int i = 0; i < numbers.length; i++)
{
       for(int j = 0; j < numbers.length; j++)
       {
                if(numbers[i] > numbers[j + 1])
                {
                       tempVar = numbers [j + 1];
                       numbers [j + 1]= numbers [i];
                       numbers [i] = tempVar;
                }
       }
}
for (int i = 0; i < numbers.length; i++)
{
         System.out.println(numbers[i].toString());
}

Bản in ra là:

1
5
số 8
14
5678

Bạn cũng có thể đặt sắp xếp bong bóng của mình trong một hàm Java. Nghĩa là bạn có thể sắp xếp bất kỳ giá trị số nguyên nào từ bất kỳ đâu trong mã của mình. Các hàm có thể là một phần của bất kỳ lớp trợ giúp nào mà bạn tạo và chúng làm cho nó thuận tiện hơn để bạn không cần phải nhập mã trong mọi lớp. Đoạn mã sau là một ví dụ về cách tạo một hàm tĩnh và gọi hàm đó từ mã của bạn:

public static void main()
{
       int[] numbers = { 5, 8, 14, 1, 5678 };
       bubblesort(numbers);
}
static void bubblesort(int[] numbers)
{
        int tempVar;
        for (int i = 0; i < numbers.length; i++)
        {
                 for(int j = 0; j < numbers.length; j++)
                 {
                         if(numbers[i] > numbers[j + 1])
                         {
                         tempVar = numbers [j + 1];
                         numbers [j + 1]= numbers [i];
                         numbers [i] = tempVar;
                         }
                 }
        }
        for (int i = 0; i < numbers.length; i++)
        {
                  System.out.println(numbers[i].toString());
        }
}

Tổng kết

Box.edu mong rằng những thông tin trên về cách sắp xếp mảng Java với vòng lặp For. Sẽ giúp bạn nắm thêm được ngôn ngữ lập trình Java này chính xác và sâu sắc hơn. Cùng đón chờ những sản phẩm chương trình Java từ những nhà lập viên trong tương lai.

5/5 - (20 bình chọn)
Xin chào các bạn! Mình là Hà Nguyên Phương Hiện đang là tác giả của Box.edu.vn website nổi tiếng chuyên review, đánh giá, giới thiệu các khóa học hay nhất hiện nay.