这是我的问题,我为它编写算法我想知道这个算法是正确的吗? 谢谢!
问题: **给了我一些数组,我应该根据“它们被排序”对它们进行排序,例如,首先是正确顺序的数组,并且元素顺序相反的数组来自结束。 假设数组的元素由字母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;
}
答案 0 :(得分:1)
听起来你需要一个抽象数据类型,其中两个成员用于保存数组,另一个用于衡量其未排序。 创建这些类型的列表,每个阵列一个。 迭代并填充unsortedness成员(有很多方法可以衡量这个) 按未排序字段对ADT进行排序。