質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

949閲覧

Pythonnでソートの実行時間を図ってグラフにしたい

takahiro444

総合スコア0

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/13 13:52

前提

Pythonで挿入ソート、マージソート、クイックソート、選択ソート、バブルソートの実行時間を求めてグラフにしたい

実現したいこと

ソートの実行時間を図りたい
実行時間を1つのグラフにしたい

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

from time import perf_counter from math import floor from random import randint from matplotlib.backends.backend_pdf import PdfPages import matplotlib.pyplot as plt def insertion_sort(A): for j in range(1, len(A)): key =A[j] i = j - 1 while i>-1 and A[i]>key: A[i+1] = A[i] i=i-1 A[i+1]=key def merge(A, p, q, r): L=[i for i in A[p:q+1]] R=[i for i in A[q+1:r+1]] L.append(float('inf')) R.append(float('inf')) i,j=0,0 for k in range(p,r+1): if L[i]<=R[j]: A[k]=L[i] i=i+1 else: A[k]=R[j] j=j+1 def merge_sort(A,p,r): if p<r: q=floor((p+r)/2) merge_sort(A,p,q) merge_sort(A,q+1,r) merge(A,p,q,r) def quicksort(A,p,r): if p<r: q=partition(A,p,r) quicksort(A,p,q-1) quicksort(A,q+1,r) def partition(A,p,r): x=A[r] i=p-1 for j in range(p,r): if A[j]<=x: i=i+1 A[i],A[j]=A[j],A[i] A[i+1],A[r]=A[r],A[i+1] return i+1 def selection_sort(A): for i in range(1,len(A)+1): m=i for j in range(i,len(A)): if A[j]<A[m]: m=j A[i],A[m]=A[m],A[i] def bubble_sort(A): for i in range(1,len(A)): for j in range(1,len(A)-i+1): if A[j]<A[j-1]: A[j],A[j-1]=A[j-1],A[j] fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.grid(True) ax.set_xlim([100,1000]) ax.set_xlabel('input size') ax.set_ylim([0,80]) ax.set_ylabel('average computation time [ms]') plt.legend(loc='best') pp = PdfPages('result.pdf') pp.savefig() pp.close()

試したこと

色々調べたがわからなかった

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

python

1sorts = [ 2 { 3 'name': 'Insertion Sort', 4 'algo': lambda arr: insertion_sort(arr) 5 }, 6 { 7 'name': 'Merge Sort', 8 'algo': lambda arr: merge_sort(arr, 0, len(arr)-1) 9 }, 10 { 11 'name': 'Quick Sort', 12 'algo': lambda arr: quicksort(arr, 0, len(arr)-1) 13 }, 14 { 15 'name': 'Selection Sort', 16 'algo': lambda arr: selection_sort(arr) 17 }, 18 { 19 'name': 'Bubble Sort', 20 'algo': lambda arr: bubble_sort(arr) 21 }, 22] 23 24import numpy as np 25import time 26 27n = np.linspace(100, 1000, 10, dtype=int) 28for s in sorts: 29 time_list = [] 30 for i in range(1, 11): 31 arr = np.random.randint(1000, size=i*100) 32 begin = time.time() 33 s['algo'](arr) 34 end = time.time() 35 time_list.append(1000*(end - begin)) 36 plt.plot(n, time_list, label=s['name']) 37 38plt.grid() 39plt.xlabel('input size') 40plt.ylabel('computation time [ms]') 41plt.legend(loc='upper left') 42 43plt.show()

イメージ説明

投稿2022/07/13 16:14

melian

総合スコア19803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問