挿入ソート
#! /usr/local/bin/python# -*- coding:utf-8 -*-def insertion_sort(array):result=[]result.append(array[0])for j in range(1,len(array)):key=array[j]result.append(key)i=j-1while i>=0 and key<result[i]:result[i+1]=result[i]result[i]=keyi-=1return result
マージソート
#! /usr/local/bin/python# -*- coding:utf-8 -*-import sys# mergeSort is merge sort function.# A is array, p is start point and r is end point.def mergeSort(A,p,r):if p<r:q=(p+r)/2mergeSort(A,p,q)mergeSort(A,q+1,r)merge(A,p,q,r)def merge(A,p,q,r):#A: array#p,q,r: value of array ,p<=q<rn1=q-p+1n2=r-qL=[0]*(n1+1)R=[0]*(n2+1)for i in range(0,n1):L[i]=A[p+i]for j in range(0,n2):R[j]=A[q+j+1]L[n1]=sys.maxintR[n2]=sys.maxinti=0j=0for k in range(p,r+1):if L[i]<=R[j]:A[k]=L[i]i+=1else:A[k]=R[j]j+=1
使い方は
挿入ソートはソートしたいリストAを用意し,insertion_sort(A)とやるとソートされた配列が返ってきます
マージソートはソートしたいリストAを用意し,mergeSort(A,0,len(A)-1)で呼び出すともとのリストAがソートされます
データを返すパターンと,void型両方実装してみましたが,統一した方がいいんですかね。。
コードはhttps://github.com/fukkyy/python-algorithm/においています
0 件のコメント:
コメントを投稿