Các thuật toán sắp xếp trên mảng trên php năm 2024
Hàm Cú pháp của hàm
Trong đó:
Hàm
1 nếu sắp xếp thành công, và
2 nếu không thành công. Ví dụ:
Kết quả:
Trong ví dụ trên, hàm
4 theo thứ tự giảm dần dựa trên giá trị của các phần tử, và in ra kết quả trên màn hình. Để viết một hàm tương tự như hàm
Hàm trên sử dụng tham chiếu để sắp xếp trực tiếp trên mảng đầu vào. Giá trị
6 và
7 được sử dụng để chỉ định phạm vi của mảng cần sắp xếp. Nếu không được chỉ định, giá trị mặc định của
7 là phần tử cuối cùng của mảng. Thuật toán sử dụng phương pháp chọn pivot giữa mảng và sử dụng hai biến
9 và
0 để di chuyển các phần tử để đưa các phần tử nhỏ hơn pivot vào bên trái và các phần tử lớn hơn pivot vào bên phải của pivot. Hàm reset() trong PHP Hàm shuffle() trong PHP Chắc hẳn bạn vẫn còn khá mông lung với thuật toán, để giúp bạn hiểu rõ hơn, chúng ta hãy cùng đến với một trò chơi "hành quân" sau: Xét một dãy số như sau: 6,1,2,7,9,3,4,5,10,86, 1, 2, 7, 9, 3, 4, 5, 10, 8 Yêu cầu là sắp xếp dãy trên theo thứ tự không giảm từ trái qua phải. Chọn phần tử chốt là số 6, xét hai "quân lính" là quân lính AA và quân lính BB lần lượt đặt ở hai đầu của dãy số (quân AA ở vị trí đầu tiên bên trái, quân BB ở vị trí cuối cùng bên phải). Luật hành quân như sau: quân BB đi trước, bắt đầu di chuyển về bên trái, đến khi gặp được phần tử có giá trị nhỏ hơn giá trị của phần tử chốt thì dừng lại, ở đây quân BB dừng ở vị trí của số 55; Tiếp theo đến lượt quần AA, bắt đầu di chuyển về bên phải, đến khi gặp được phần từ có giá trị lớn hơn giá trị của phần tử chốt thì dừng lại, ở đây quân AA dừng ở vị trí số 77. Lúc này ta đổi chỗ 22 số ở vị trí của quân AA và BB cho nhau, sau đó hai quân AA và BB trở về vị trí như lúc đầu, ta thu được dãy số sau: 6,1,2,5,9,3,4,7,10,86, 1, 2, 5, 9, 3, 4, 7, 10, 8 Tiếp tục cuộc hành quân như trên, lượt này ta sẽ cần đổi chỗ hai số 44 và 99 cho nhau, ta được dãy số: 6,1,2,5,4,3,9,7,10,86, 1, 2, 5, 4, 3, 9, 7, 10, 8 Đến với lượt hành quân tiếp theo, ta thấy quân BB sẽ dừng lại ở vị trí của số 33, tuy nhiên quân AA chưa tìm được số nào lớn hơn 66 đã "đụng mặt" quân B, như vậy ta coi lượt hành quân này là thất bại, và ta tiến hành đổi chỗ số 33 (số mà quân BB đang dừng lại) với phần tử chốt là số 66. Ta thu được: 3,1,2,5,4,6,9,7,10,83, 1, 2, 5, 4, 6, 9, 7, 10, 8 Lúc này, chúng ta hãy quan sát phần tử chốt (số 66): sau loạt hành quân đầu tiền thì tất cả những phần tử nằm bên trái phần tử chốt đều nhỏ hơn nó, và tất cả những phần tử nằm bên phải phần tử chốt đều lớn hơn nó. Như vậy ta đã đưa số 66 về đúng vị trí của nó. Tiếp theo dãy được chia thành 22 dãy nhỏ hơn là dãy bên trái số 66 và dãy bên phải số 66. Ta tiếp tục thực hiện luật hành quân như trên đối với hai dãy này và sẽ thu được thêm các phần tử chốt khác ở đúng vị trí và xuất hiện thêm các dãy con độ dài ngắn hơn. Thực hiện đến cuối ta thu được dãy có thứ tự như mong muốn. III. Thuật toán tham khảo
IV. Những điều lưu ý về thuật toán1. Phần tử chốt.Sau khi hiểu về thuật toán, có lẽ bạn sẽ có một nghi vấn nhỏ nảy lên trong đầu: Tại sao chọn phần tử chốt là phần tử đầu tiên bên trái? Và cách chọn phần tử chốt có ảnh hưởng đến độ nhanh chậm của sắp xếp hay không? Thực tế thì kỹ thuật chọn phần tử chốt ảnh hưởng khá lớn đến thuật toán, bởi chúng ta có khả năng bị rơi vào các vòng lặp vô hạn. Một số cách chọn phần tử chốt để bạn tham khảo: |