Bất kỳ chuỗi dữ liệu nào cùng loại đều có thể được biểu diễn dưới dạng danh sách. Danh sách có thể có thứ tự và không có thứ tự. Trong trường hợp thứ hai, làm việc với dữ liệu, tìm giá trị mong muốn và truy cập các phần tử của danh sách gây ra những khó khăn nhất định. Danh sách các biến chuỗi thường được sắp xếp theo thứ tự bảng chữ cái. Có nhiều phương pháp sắp xếp, trong mỗi trường hợp bạn nên chọn một thuật toán tối ưu nhất.
Hướng dẫn
Bước 1
Khi chọn phương pháp sắp xếp tốt nhất, có hai điều cần xem xét: thời gian thực hiện thao tác sắp xếp và dung lượng bộ nhớ cần thiết cho bộ nhớ phụ. Các thuật toán sắp xếp không yêu cầu thêm bộ nhớ được gọi là sắp xếp "tại chỗ". Một trong những cách dễ thực hiện nhất là sắp xếp bong bóng chậm, quét từng cặp mục trong danh sách và hoán đổi vị trí tùy theo thứ tự mong muốn.
Bước 2
Có một phương pháp sắp xếp nhanh hơn bằng cách tìm mục tối thiểu hoặc tối đa trong danh sách. Trong trường hợp sắp xếp theo thứ tự bảng chữ cái, mỗi khi xem qua danh sách, bạn cần tìm phần tử lớn nhất của nó - đây sẽ là một chuỗi bắt đầu bằng chữ cái gần nhất với đầu bảng chữ cái. Sau khi tìm thấy, chuỗi được hoán đổi với mục đầu tiên trong danh sách ở lần vượt qua đầu tiên. Sau khi xem xét thêm danh sách, vị trí đầu tiên bị loại trừ, phần tử tối đa tiếp theo được tìm kiếm, đặt ở vị trí thứ hai, v.v. Đoạn mã của chương trình sắp xếp trong C ++ theo phương pháp tìm phần tử lớn nhất của danh sách: String Arr [20], cTemp; int N = 20, Max, Pos; for (int i = 0; i <N- 1; i ++) {Max = Arr ; Pos = i; for (int j = 0; j <N; j ++) {if (Arr [j] <Max) {Max = Arr [j]; Pos = j; } cTemp = Arr ; Arr = Arr [Pos]; Arr [Pos] = cTemp; }}
Bước 3
Giải pháp tối ưu nhất để sắp xếp dữ liệu chuỗi trong danh sách là sắp xếp chèn. Bản chất của nó nằm ở chỗ, với mỗi lần đi qua danh sách, có một phần có thứ tự của danh sách gồm một số phần tử nhất định, do đó, phần tử tiếp theo được xem xét được đặt ở một vị trí thích hợp trong danh sách. Mã C ++ của thuật toán sắp xếp chèn: String Arr [20], cTemp; int N = 20; for (int i = 1, j = 0; i <N; i ++) {cTemp = Arr ; j = i - 1; while (cTemp <Arr [j]) {Arr [j + 1] = Arr [j]; NS--; if (j <0) break; Arr [j + 1] = cTemp; }}