2012-05-27 5 views
1
import sys 
final_set = [] 
init_set = [] 
for i in range(1,len(sys.argv)): 
    init_set.append(sys.argv[i]) 
for i in range(len(init_set)): 
    cur_min = min(init_set) 
    final_set.append(cur_min) 
    init_set.remove(cur_min) 
print final_set 

이 기본 정렬 알고리즘에는 이미 이름이 있어야합니다. 누구나 시간과 복잡성을 식별 할 수 있습니까?이 정렬 방법은 어떤 알고리즘을 사용합니까?

+1

이들은 목록이 아니라 집합이라는 점에 유의하십시오. – jamylak

+0

그래, 내가 이름을 지었을 때 나는 정말로 생각하고 있지 않았다. – user1419802

답변

5

이것은 2 차 복잡도를 갖는 Selection sort 인 것으로 보입니다.

+0

작업 횟수가 모두 n^2 미만이었습니다. 왜 이런거야? n^2/2는 알고리즘 복잡도에서 n^2와 동일한 것으로 간주됩니까? – user1419802

+0

@ user1419802 최소값을 확인하는 것은 각 요소를 검토해야합니다. – jamylak

+1

목록의 한 항목이 집합이 하나의 더 작은 값이 될 때마다 제거되므로 첫 번째 반복에서 n 번의 작업이 수행됨을 의미하며 다음 작업은 n-1 번의 작업을 수행하는 식입니다. 아마도 n^2보다 작을 것입니다. – user1419802

관련 문제