CÁC THUẬT TOÁN SẮP XẾP TRONG JAVA

     

1. Sắp xếp nổi bọt (Bubble Sort) vào Java

Đề bài: Viết chương trình Java sắp xếp một hàng số theo trang bị tự tăng dần đều bằng thuật toán nổi bong bóng (Bubble Sort).

Bạn đang xem: Các thuật toán sắp xếp trong java

Lời giải

Sắp xếp nổi bong bóng (Bubble Sort) là một trong giải thuật bố trí đơn giản. Lời giải sắp xếp này được triển khai dựa trên việc đối chiếu cặp phần tử liền kề nhau với tráo đổi lắp thêm tự giả dụ chúng không tuân theo thứ tự.

Giải thuật này không phù hợp sử dụng với các tập dữ liệu lớn khi nhưng độ phức tạp trường phù hợp xấu nhất cùng trường hòa hợp trung bình là Ο(n2) với n là số phần tử.

Giải thuật thu xếp nổi bọt bong bóng là giải mã chậm nhất trong những các giải mã sắp xếp cơ bản. Giải thuật này còn chậm chạp hơn giải thuật đổi địa điểm trực tiếp tuy nhiên số lần so sánh bằng nhau, nhưng vì chưng đổi nơi hai thành phần kề nhau phải số lần đổi chỗ nhiều hơn.

Dưới đó là chương trình Java để giải bài sắp xếp nổi bọt bong bóng (Bubble Sort) vào Java:


package vn.eLib.array;public class SapXepNoBot public void bubbleSort(int arr<>) int temp; int i, j; boolean swapped = false; // lap qua tat ca cac so for (i = 0; i arr) temp = arr; arr = arr; arr = temp; swapped = true; System.out.println(" => trao doi <" + arr + ", " + arr + ">"); else System.out.println(" => khong can trao doi."); // neu khong can trao doi nua, tuc la // với da duoc sap xep va thoat khoi vong lap. If (!swapped) break; System.out.println("Vong lap thu " + (i + 1)); display(arr); } public void display(int arr<>) int i; System.out.print("<"); // Duyet qua tat ca phan tu for (i = 0; i
Chạy chương trình Java bên trên cho tác dụng như sau:

*

2. Bố trí chọn (Selection Sort) vào Java

Đề bài: Viết lịch trình Java thu xếp một dãy số theo máy tự tăng dần đều bằng thuật toán chọn (Selection Sort).

Lời giải

Giải thuật sắp xếp chọn (Selection Sort) là 1 trong giải thuật đối kháng giản. Giải mã sắp xếp này là một giải thuật dựa vào việc so sánh in-place, trong các số ấy danh sách được phân thành hai phần, phần được sắp xếp (sorted list) ở phía trái và phần chưa được sắp xếp (unsorted list) ở bên phải. Ban đầu, phần được sắp xếp là trống cùng phần chưa được sắp xếp là toàn bộ danh sách ban đầu.

Phần tử nhỏ nhất được lựa chọn từ mảng không được sắp xếp và được tráo đổi với phần bên trái tuyệt nhất và bộ phận đó trở thành bộ phận của mảng được chuẩn bị xếp. Các bước này tiếp tục tính đến khi cục bộ từng phần tử trong mảng không được sắp xếp phần lớn được dịch chuyển sang mảng đã được sắp đến xếp.

Dưới đây là chương trình Java nhằm giải bài bố trí chọn (Selection Sort) vào Java:


package vn.eLib.array;public class SapXepChon public void selectionSort(int arr<>) int indexMin, i, j; // lap qua ta ca cac so for (i = 0; i Trao doi phan tu: <" + arr + ", " + arr + ">"); // Trao doi cac so int temp = arr; arr = arr; arr = temp; System.out.println("Vong lap thu " + (i + 1)); display(arr); public void display(int arr<>) { int i; System.out.print("<"); // Duyet qua tat ca phan tu for (i = 0; i
Chạy lịch trình Java bên trên cho công dụng như sau:

*

3. Sắp xếp chèn (Insertion Sort) vào Java

Đề bài: Viết công tác Java sắp xếp một hàng số theo vật dụng tự tăng mạnh bằng thuật toán chèn (Insertion Sort).

Xem thêm: Chợ Mua Xe Máy Cũ Ở Hải Phòng Chất Lượng, Mua Bán Xe Máy

Lời giải

Sắp xếp chèn là 1 trong những giải thuật thu xếp dựa trên đối chiếu in-place. Ở đây, một list con luôn luôn luôn được duy trì dưới dạng đã qua sắp xếp. Bố trí chèn là chèn thêm một trong những phần tử vào list con sẽ qua chuẩn bị xếp. Phần tử được chèn vào vị trí phù hợp hợp làm thế nào cho vẫn đảm bảo rằng danh sách con đó vẫn sắp theo sản phẩm công nghệ tự.

Với cấu trúc dữ liệu mảng, bọn họ tưởng tượng là: mảng có hai phần: một danh sách con đã được sắp xếp và phần không giống là các thành phần không tất cả thứ tự. Lời giải sắp xếp chèn sẽ tiến hành việc search kiếm liên tục qua mảng đó, cùng các phần tử không gồm thứ tự vẫn được dịch rời và được chèn vào vị trí tương thích trong list con (của cùng mảng đó).

Giải thuật này không tương thích sử dụng với những tập dữ liệu lớn lúc độ tinh vi trường đúng theo xấu nhất và trường thích hợp trung bình là Ο(n2) với n là số phần tử.

Dưới đây là chương trình Java nhằm giải bài thu xếp chèn (Insertion Sort) vào Java:


package vn.eLib.array;public class SapXepChen public void insertionSort(int arr<>) int valueToInsert; int holePosition; int i; // lap qua tat ca cac so for (i = 1; i 0 && arr > valueToInsert) arr = arr; holePosition--; System.out.println("Di chuyen phan tu: " + arr); if (holePosition != i) System.out.println(" Chen phan tu: " + valueToInsert + ", tai vi tri: " + holePosition); // chen phan tu tai vi tri chen arr = valueToInsert; System.out.println("Vong lap thu " + i); display(arr); public void display(int arr<>) { int i; System.out.print("<"); // Duyet qua tat ca phan tu for (i = 0; i
Chạy chương trình Java trên cho hiệu quả như sau:

*

4. Sắp xếp cấp tốc (Quick Sort) vào Java

Đề bài: Viết công tác Java bố trí một dãy số theo sản phẩm tự tăng nhiều bằng thuật toán nhanh (Quick Sort).

Lời giải

Giải thuật thu xếp nhanh (Quick Sort) là 1 trong giải thuật kết quả cao và dựa vào việc chia mảng dữa liệu thành những mảng bé dại hơn. Lời giải sắp xếp cấp tốc chia mảng thành nhị phần bằng cách so sánh từng phần tử của mảng với một trong những phần tử được chọn hotline là phần tử chốt (Pivot): một mảng bao gồm các phần tử nhỏ tuổi hơn hoặc bằng thành phần chốt và mảng còn lại bao gồm các thành phần lớn rộng hoặc bằng bộ phận chốt.

Dưới đó là chương trình Java để giải bài sắp xếp nhanh (Quick Sort) trong Java:


package vn.eLib.array;public class SapXepNhanh { // si mê de trao doi gia tri public void swap(int arr<>, int num1, int num2) int temp = arr; arr = arr; arr = temp; // si mê de phân tách mang thanh 2 phan, su dung phan tu chot (pivot) public int partition(int arr<>, int left, int right, int pivot) int leftPointer = left - 1; int rightPointer = right; while (true) while (arr<++leftPointer> 0 && arr<--rightPointer> > pivot) // khong lam gi if (leftPointer >= rightPointer) break; else System.out.println(" Phan tu duoc trao doi: " + arr + ", " + arr); swap(arr, leftPointer, rightPointer); System.out.println(" Phan tu chot duoc trao doi: " + arr + ", " + arr); swap(arr, leftPointer, right); display(arr); return leftPointer; // ham mê sap xep public void quickSort(int arr<>, int left, int right) { if (right - left Javahạy công tác Java bên trên cho tác dụng như sau:


*

5. Sắp xếp trộn (Merge Sort) trong Java

Đề bài: Viết lịch trình Java bố trí một dãy số theo sản phẩm tự tăng nhiều bằng thuật toán trộn (Merge Sort).

Lời giải

Sắp xếp trộn (Merge Sort) là một trong giải thuật thu xếp dựa trên giải thuật Chia nhằm trị (Divide và Javaonquer). Cùng với độ tinh vi thời gian trường hòa hợp xấu nhất là Ο(n log n) thì đây là một trong các giải thuật đáng được thân thiện nhất.

Xem thêm: 5 Cách Phân Biệt Đồng Hồ Hublot Thật Giả Dễ Và Chính Xác Nhất

Đầu tiên, giải thuật sắp xếp trộn chia mảng thành nhì nửa và tiếp nối kết hợp chúng lại cùng nhau thành một mảng sẽ được sắp tới xếp.