정수를 가장 낮은 값부터 가장 높은 값 순으로 정렬 한 다음 다시 낮은 순으로 정렬하는 두 가지 함수를 만들었습니다. 이런 종류의 정렬이 있습니까? 어쨌든 동일한 출력을 생성하는 다음 두 가지 정렬 함수가 있습니다. 나는 그 중 가장 효율적인 것이 무엇인지 궁금 해서요? 어느 개선점이 있습니까?두 개의 정렬 함수 사이의 효율성
sortMiddleMax1
- 새로운 역 2
sortMiddleMax2
- 정렬에 의해 목록 단계의 길이 인덱스 1에서 원래
- 시작의 목록을 분류 만들기 예고 있음
- 시작 마지막 인덱스에서
2에 의해 단계 0에 나는 처음보다 두 번째가 더 효율적으로 만들기 위해 노력했다. 나는 메모리에 새로운리스트를 만들지 않았고 전체리스트를 밀어 넣는 대신 끝에 추가했다. 이 가정에서 나는 맞습니까?
기능
def sortMiddleMax1(aList=None, verbose=False):
if aList == None or len(aList) < 2:
return aList
else:
sList = sorted(x, key=None, reverse=True)
if verbose: print sList
index = 1
while index < len(sList):
tmp = sList[index]
del sList[index]
sList.insert(0, tmp)
index+=2
if verbose: print sList
return sList
def sortMiddleMax2(aList=None, verbose=False):
if aList == None or len(aList) < 2:
return aList
else:
aList.sort()
if verbose: print aList
index = len(aList)-1
while index > 0:
tmp = aList[index]
del aList[index]
aList.append(tmp)
index-=2
if verbose: print aList
return aList
홈페이지
x = [1,4,6,8,3,5,7,1,5,8,3,9,2,8]
print '############# sortMiddleMax1 #############'
x1 = sortMiddleMax1(x, True)
print '############# sortMiddleMax2 #############'
x2 = sortMiddleMax2(x, True)
당신은 결과 위스콘신 얻을 목록 슬라이스를 사용할 수 있습니다
############# sortMiddleMax1 #############
[9, 8, 8, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[8, 9, 8, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[8, 8, 9, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[6, 8, 8, 9, 8, 7, 5, 5, 4, 3, 3, 2, 1, 1]
[5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 3, 2, 1, 1]
[3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 2, 1, 1]
[2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1, 1]
[1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1]
############# sortMiddleMax2 #############
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 8, 9]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 8, 9]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 8]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 8, 8, 9, 8, 7]
[1, 1, 2, 3, 3, 4, 5, 6, 8, 8, 9, 8, 7, 5]
[1, 1, 2, 3, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4]
[1, 1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3]
[1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1]
가장 빠른 것을보기 위해 각각의 시간을 시도해 보셨습니까? –
정렬에 대한 정의가 잘 정의되어 있는지 확실하지 않습니다.'[1,2,3,4,5,10,9,8,7,6]'이 유효한 결과가 될까요? 그것은 올라간다, 그리고 그것은 내려 간다! 유효하지 않으면 출력의 첫 번째와 두 번째 절반이 어떻게 관련되는지 정확하게 지정해야합니다. – Blckknght
@David 나는 그들을시기를 정하지 않았다. 나는 기억 발자국을 찾고있는만큼 속도를 찾고 있지 않다. –