2010-06-20 71 views
0

这是我的问题,我为它写了一个算法我想知道这个算法是正确的? 谢谢!!使用插入排序来识别数组的顺序

问题: **我给出了一些数组,我应该根据“它们是有序的”对它们进行排序,例如一个数组按照正确的顺序出现,并且一个数组表示它的元素在相反的顺序是在最后。 假设数组的元素由字母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

请写下投票的理由! – user355002 2010-06-20 19:07:49

+0

我没有downvote,但我想这是因为你的问题是不是很清楚,并读取像一些不完整的剪切和粘贴作业。 – 2010-06-20 21:07:25

回答

1

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