다음 오류가있는 코드를 가지고 있지만 그렇지 않으면 삽입 정렬이라고 생각하는 코드를 수행합니다. 질문이 두 개 있습니다. 1.이 작업을 실행할 때 인덱스 오류가 발생하는 이유는 무엇입니까? 2. 교육 및 학습 목적으로 for 루프를 통합하여 전체 코드를 단순화하려면 어떻게해야합니까? 누군가가 반복되는 장소와 루프를 사용하는 솔루션에 어떻게 대응하는지 설명해달라고합니다. * i와 j를 사용하여 중첩 루프를 사용해야한다는 것을 알고 있지만 어떻게 처리 할 수는 없습니다. 루프의 길이에 i를 제공하는 외부 레벨 루프를 추가했습니다.효과적인 반복을 통합하기 위해 if 문을 사용하는 알고리즘의 단순화
코드 :
def main():
#test with 6125
#test with 0142
#test with 4312
#test with 5432
list=[4,2,6,1]
print(list)
for i in range(len(list)):
#checking first element
if list[i+1]<list[i]:
temp1=list[i]
list[i]=list[i+1]
list[i+1]=temp1
print("first iteration:",list)
#Checking second element
if list[i+2]<list[i]:
temp1=list[i]
list[i]=list[i+2]
list[i+2]=temp1
print("second iteration:",list)
if list[i+2]>list[i]:
if list[i+2]<list[i+1]:
temp2=list[i+1]
list[i+1]=list[i+2]
list[i+2]=temp2
print("second iteration else #1:",list)
#Checking Third element
if list[i+3]<list[i]:
temp1=list[i]
temp2=list[i+1]
temp3=list[i+2]
list[i]=list[i+3]
list[i+1]=temp1
list[i+2]=temp2
list[i+3]=temp3
print("third iteration:",list)
elif list[i+3]>list[i]:
if list[i+3]<list[i+1]:
temp1=list[i+1]
temp2=list[i+2]
temp3=list[i+3]
list[i+1]=temp2
list[i+2]=temp3
list[i+3]=temp1
print("third iteration else #1:",list)
elif list[i+3]>list[i+1]:
if list[i+3]<list[i+2]:
temp3=list[i+2]
list[i+2]=list[i+3]
list[i+3]=temp3
print("third iteration else #2!",list)
main()
출력 # 1 :
#Test with [4, 2, 6, 1]
('first iteration:', [2, 4, 6, 1])
('third iteration:', [1, 2, 4, 6])
**IndexError:** list index out of range on line 54 in main.py
출력 테스트 # 2
#Test with [5, 4, 3, 2]
('first iteration:', [4, 5, 3, 2])
('second iteration:', [3, 5, 4, 2])
('second iteration else #1:', [3, 4, 5, 2])
('third iteration:', [2, 3, 4, 5])
코드에 대한 장신구은 https://trinket.io/python/fb5116c1ed
주 (온라인 수정을 위해) 여기에서 찾을 수 있습니다 : 나는 파이썬 임시 변수를 사용하지 않고이 작업을 수행 할 수 있습니다 실현,하지만 난 그들을 사용하여 솔루션을 구현하고 싶습니다. 모든 답변에 기존의 코드와 제공된 코드를 사용하십시오.