对数组进行排序 - 比较和交换在哪里进行?

时间:2014-09-03 23:03:53

标签: python arrays sorting

  

检查给定的Python源代码以进行插入排序和选择排序。跑过   在一些小例子上的代码,以证明两者都正确地排序给定   输入

     

仪器(修改)两个程序来计算数据的比较次数   排序过程中的元素。记录每个比较的数量   为100,200,400和800行输入的三个输入文件中的每一个排序。   继续修改每个排序算法以计算交换次数   数据元素。

     

记录与之前相同的输入集的交换次数。   输入您修改后的源代码和您记录的比较数量   互换。

我正在尝试将Insersion排序和选择排序结合起来,这样程序就会在一次运行时吐出我需要的所有答案。这是我目前的代码。

import sys

def IS(a,length):
ISComp = 0
ISSwap = 0
minindex = 0
for i in range(1,length,1):
    if (a[i] < a[minindex]):
        minindex = i
a[0],a[minindex] = a[minindex],a[0]

for i in range(2,length,1):
    ISComp += 1
    j = i
    value = a[j]
    while (value < a[j-1]):
        a[j] = a[j-1]
        j = j-1
    a[j] = value
    ISSwap += 1

return(ISComp, ISSwap)

def SS(a,length):
SSComp = 0
SSSwap = 0
for i in range(0,length-1,1):
    minIndex = i
    for j in range(i+1,length,1):
        if (a[j] < a[minIndex]):
            minIndex = j
            SSComp += 1
    temp = a[i]
    a[i] = a[minIndex]
    a[minIndex] = temp
    SSSwap += 1

return(SSComp, SSSwap)

def main():
print("Working with File 1...")
file = open("file1","r")
print("For 100 lines of data:")
stringArray = []
for i in range(0,100,1):
    stringArray.append(int(file.readline()))
(isc, iss) = IS(stringArray, 100)
(ssc, sss) = SS(stringArray, 100)
print(str(isc) + " InsersionSort Comparisons, ", str(iss) + " InsersionSort Swaps")
print(str(ssc) + " SelectionSort Comparisons, ", str(sss) + " SelectionSort Swaps")

print("For 200 lines of data:")
stringArray = []
for i in range(0,200,1):
    stringArray.append(int(file.readline()))
(isc, iss) = IS(stringArray, 200)
(ssc, sss) = SS(stringArray, 200)
print(str(isc) + " InsersionSort Comparisons, ", str(iss) + " InsersionSort Swaps")
print(str(ssc) + " SelectionSort Comparisons, ", str(sss) + " SelectionSort Swaps")
main()

问题是,我不确定在哪里添加ISSwap,ISComp等,以便在运行程序时为我提供正确的答案。每个职能部门在哪里进行比较和互换?

0 个答案:

没有答案