Tidak, itu tergantung pada aplikasi Anda. Ukuran penyortiran sering disebut sebagai ukuran gangguan , yang merupakan fungsi dari ke R , di mana N < N adalah kumpulan dari semua urutan terbatas dari bilangan bulat non-negatif yang berbeda. Survei oleh Estivill-Castro dan Wood [1] daftar dan membahas 11 ukuran gangguan yang berbeda dalam konteks algoritma pengurutan adaptif.N<NRN<N
Jumlah inversi mungkin berfungsi untuk beberapa kasus, tetapi kadang-kadang tidak cukup. Contoh yang diberikan dalam [1] adalah urutannya
⟨⌊n/2⌋+1,⌊n/2⌋+2,…,n,1,…,⌊n/2⌋⟩
that has a quadratic number of inversions, but only consists of two ascending runs. It is nearly sorted, but this is not captured by inversions.
[1] Estivill-Castro, Vladmir, and Derick Wood. "A survey of adaptive sorting algorithms." ACM Computing Surveys (CSUR) 24.4 (1992): 441-476.
Mannila [1] axiomatizes presortedness (with a focus on comparison-based algorithms) as follows (paraphrasing).
Examples of such measures are the
Note that random distributions using these measures have been defined, i.e. such that make sequences that are more/less sorted more or less likely. These are called Ewens-like distributions [2, Ch. 4-5; 3, Example 12; 4], a special case of which is the so-called Mallows distribution. The weights are parametric in a constantθ>0 and fulfill
Note howθ=1 defines the uniform distribution (for all m ).
Since it is possible to sample permutations w.r.t. these measures efficiently, this body of work can be useful in practice when benchmarking sorting algorithms.
sumber
I have my own definition of "sortedness" of a sequence.
Given any sequence [a,b,c,…] we compare it with the sorted sequence containing the same elements, count number of matches and divide it by the number of elements in the sequence.
For example, given sequence
[5,1,2,3,4]
we proceed as follows:1) sort the sequence:
[1,2,3,4,5]
2) compare the sorted sequence with the original by moving it one position at a time and counting the maximal number of matches:
3) The maximal number of matches is 4, we can calculate the "sortedness" as 4/5 = 0.8.
Sortedness of a sorted sequence would be 1, and sortedness of a sequence with elements placed in reversed order would be 1/n.
The idea behind this definition is to estimate the minimal amount of work we would need to do to convert any sequence to the sorted sequence. In the example above we need to move just one element, the 5 (there are many ways, but moving 5 is the most efficient). When the elements would be placed in reversed order, we would need to move 4 elements. And when the sequence were sorted, no work is needed.
I hope my definition makes sense.
sumber
If you need something quick and dirty (summation signs scare me) I wrote a super easy disorder function in C++ for a Class named Array which generates int arrays filled with randomly generated numbers:
Function simply compares the value in each element to the index of the element + 1 so that an array in reverse order has a disorder value of 1, and a sorted array has a disorder value of 0. Not sophisticated, but working.
Michael
sumber