使用插入排序来识别数组的顺序

时间:2010-06-20 18:37:48

标签: algorithm

这是我的问题,我为它编写算法我想知道这个算法是正确的吗? 谢谢!

问题: **给了我一些数组,我应该根据“它们被排序”对它们进行排序,例如,首先是正确顺序的数组,并且元素顺序相反的数组来自结束。 假设数组的元素由字母A,C,G,T组成。包括输入数组的数量(n),长度(m)和数组的名称。 **

我的算法:

Algorithm Sort(n,arr(One)[1,…,m],arr(Two)[1,…m],…arr(n)[1,…,m])

for i<--1 to n
         m<-- SumTheNumberOfInversions(arr(i))
         v[i] = m
Arrays.sort(v[i])
j <--i
for j<-- 1 to n
     return arr(j)
//end of Sort algorithm
---------------------------------------------
Algorithm SumTheNumberOfInversions(arr)
Output: sum of the numbers of inversions 
{
    int i, j, t,numberOfInversions=0;
    for (i=1; i<n; i++)
    {
        j=i;
        t=arr[j];
        while (j>0 && arr[j-1]>t)
        {
            arr[j]=arr[j-1];
            numberOfInversions++;
            j--;
        }
        arr[j]=t;
    }
     return numberOfInversions;
}

1 个答案:

答案 0 :(得分:1)

听起来你需要一个抽象数据类型,其中两个成员用于保存数组,另一个用于衡量其未排序。 创建这些类型的列表,每个阵列一个。 迭代并填充unsortedness成员(有很多方法可以衡量这个) 按未排序字段对ADT进行排序。