このコードでのクイックソートについて質問です。sort()にdataが渡されて初めてfor文の処理が終わった後、left=[1,3,2,4,2,1]right=[]middle=[5]になるなど再帰関数が終わるまでの処理、そして、その後5は出てこないことも分かります。ここで質問なのですが、この5などmiddleに入った値をどのように最終的にクイックソートしたリストで戻り値として返してくるのかが分からないです。最初にでていった5はどこにいくのでしょうか。説明文が分かりにくくすみません。よろしくお願いします。
python
1def sort(data): 2 n = len(data) 3 pivot = data[n//2] 4 left,right,middle = [],[],[] 5 for i in range(n): 6 if data[i] < pivot: 7 left.append(data[i]) 8 elif data[i] > pivot: 9 right.append(data[i]) 10 else: 11 middle.append(data[i]) 12 print("left = ",left) 13 print("right=",right) 14 print("middle= ",middle) 15 print("-----------") 16 if left: 17 left = sort(left) 18 if right: 19 right = sort(right) 20 return left + middle + right 21 22data = [1,3,2,5,4,2,1] 23data = sort(data) 24print(data)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/25 05:14