TIL no.9-位置合わせ
連結ソート
ソース:visualgonet/sorting
マージソートはDevideとConquerに関する基本概念です.すなわち,いくつかの問題はまず小さな問題に分けてから,元の問題に組み合わせる.では、次の連結ソートコードについて説明します.
サンプルコード
def Dsort(lt, rt):
if lt < rt:
mid = (lt + rt)//2
Dsort(lt, mid)
Dsort(mid+1, rt)
p1=lt
p2=mid+1
tmp=[]
while p1<=mid and p2<=rt:
if arr[p1]<arr[p2]:
tmp.append(arr[p1])
p1+=1
else:
tmp.append(arr[p2])
p2+=1
if p1 <= mid: tmp=tmp+arr[p1:mid+1]
if p2 <= rt: tmp=tmp+arr[p2:rt+1]
for i in range(len(tmp)):
arr[lt+i]=tmp[i]
arr=[23, 11, 45, 36, 15, 67, 33, 21]
print("before", end="")
print(arr)
Qsort(0, 7)
print()
print("after", end="")
print(arr)
連結ソート・プロシージャ
ltとrtは、整列する両端に配置されます.
midはgtとrtを加算して割った整数である.
2本の支線の延長はrtの条件よりも常に小さいことを認識しなければならない.
2つの数字を比較し、tmpという名前の場所で一時的に数字の大きさを比較して保存します.
tmpのソート数をarrに再入力します.
このようにして、延長された分岐に沿って上に並ぶ方法をマージソートと呼ぶ.
Reference
この問題について(TIL no.9-位置合わせ), 我々は、より多くの情報をここで見つけました https://velog.io/@baik9261/TIL-no.8-병합-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol