Tôi có định nghĩa riêng về "sự sắp xếp" của một chuỗi.
Cho bất kỳ chuỗi nào [a, b, c, Nhận] chúng tôi so sánh nó với chuỗi được sắp xếp có chứa các phần tử giống nhau, đếm số lượng trùng khớp và chia nó cho số phần tử trong chuỗi.
Ví dụ, trình tự đã cho, [5,1,2,3,4]
chúng tôi tiến hành như sau:
1) sắp xếp thứ tự: [1,2,3,4,5]
2) so sánh trình tự được sắp xếp với bản gốc bằng cách di chuyển nó một vị trí tại một thời điểm và đếm số lượng khớp tối đa:
[5,1,2,3,4]
[1,2,3,4,5] one match
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
[5,1,2,3,4]
[1,2,3,4,5] 4 matches
[5,1,2,3,4]
[1,2,3,4,5] no matches
...
[5,1,2,3,4]
[1,2,3,4,5] no matches
3) Số lượng trận đấu tối đa là 4, chúng ta có thể tính "độ sắp xếp" là 4/5 = 0,8.
Sắp xếp thứ tự của một chuỗi được sắp xếp sẽ là 1 và sắp xếp của một chuỗi với các phần tử được đặt theo thứ tự đảo ngược sẽ là 1 / n.
Ý tưởng đằng sau định nghĩa này là ước tính khối lượng công việc tối thiểu chúng ta sẽ cần phải làm để chuyển đổi bất kỳ chuỗi nào thành chuỗi đã sắp xếp. Trong ví dụ trên, chúng ta chỉ cần di chuyển một yếu tố, 5 (có nhiều cách, nhưng di chuyển 5 là hiệu quả nhất). Khi các yếu tố sẽ được đặt theo thứ tự đảo ngược, chúng ta sẽ cần di chuyển 4 yếu tố. Và khi trình tự đã được sắp xếp, không cần làm việc.
Tôi hy vọng định nghĩa của tôi có ý nghĩa.