0

Python バージョン - 3.3.2

リストを数値の範囲 (0 ~ 25) に設定し、これらの数値をランダムにシャッフルしてから、バブル ソート、選択ソート、Python ソート、および挿入ソートの 4 つの異なるソート関数を使用してこれらの数値をソートする Python プログラムを作成しています。プログラムの最後には、各関数が乱数の範囲をソートするのにかかる時間を計るタイマー関数もあります。

範囲を(0-25)から(0-100)、次に(0-1000)、最後に(0-10000)に変更する方法が必要です。数値の範囲をループするたびに、各ソート関数のリストをソートするのにかかる時間を出力します。

コードの例を次に示します。

    import random
    import time

    # Sets myList equal to a range with a range from 0-25
    myList = list(range(0,25))
    # Randomly shuffles the list of numbers between 0-25
    random.shuffle(myList)

    # Bubble Sort
    def bubbleSort(myList):
    ...(insert code)...

    # Selection Sort
    def selectionSort(myList):
    ...(insert code)...

    # Python Sort
    def pythonSort(myList):
    ...(insert code)...

    # Insertion Sort
    def insertionSort(myList):
    ...(insert code)...

    # Timer
    def timer(array, func):
    ...(insert code)...
    print("Time needed for", func.__name__, 'to sort',len(array),'items: ',diff)

    timer(myList, selectionSort)
    timer(myList, bubbleSort)
    timer(myList, pythonSort)
    timer(myList, insertionSort)

繰り返しになりますが、私の質問は、リストを (0-25) に等しく設定し、すべての並べ替え関数をループして、各並べ替え関数が完了するまでの時間を出力し、次にリストを (0-100) に変更する方法です。すべての関数をループし、各関数の時間を出力します (0-1000) と (0-100000)?

4

3 に答える 3

2

wjlが示唆するように

for length in [25, 100, 1000, 10000]:
    myList = range(length) # range(25) is equal to range(0,25)

    timer(myList, selectionSort) #assuming that selectionSort doesn't alter myList
    timer(myList, bubbleSort)
    timer(myList, pythonSort)
    timer(myList, insertionSort)
于 2013-09-10T01:16:50.963 に答える
0

次のようなものが必要です。

from datetime import datetime
from random import shuffle


def timer(data, sortfn):
    start = datetime.now()
    sortfn(data)
    end = datetime.now()
    return end - start

def tester():
    lengths = (25, 100, 1000, 10000)
    sortfns = (selectionSort, bubbleSort, pythonSort, insertionSort)
    for length in lengths:
        myList = list(range(length))
        shuffle(myList)
        for sortfn in sortfns:
            # Take a deep copy of the shuffled data
            shuffled = myList[:]
            # Sort the shuffled data
            elapsed = timer(shuffled, sortfn)
            print("{0}({1}): {2}".format(sortfn.__name__, length, elapsed))

tester()
于 2013-09-10T23:12:28.700 に答える