2014-07-23 3 views
0

나는 다른 정렬을 할 수 있고 그것들이 어떻게 상호 작용 하는지를 알 수 있도록 난수 배열을 만들고 있습니다. 문제는 내가 배열에 정렬을 호출 할 때 배열이 이미 정렬 되었기 때문에 배열을 다시 사용할 수 없다는 것입니다. 파이썬이 어떻게 과제를 처리 하는지를 이해하지 못하는 것 같습니다. 다른 배열에 배열을 할당하면 메모리 주소를 공유하는 것처럼 보입니다. 어떤 사람은 배열을 파이썬으로 어떻게 할당하는지 알려주고 왜 내 코드가 작동하지 않는지 설명해 줄 수 있습니까?파이썬에서의 배열, 배열

내 삽입 정렬이라고하는 곳입니다. 목표는 random_test_array_10을 정렬되지 않은 상태로 유지하면서 insertion_sort_array를 올바르게 정렬하도록하는 것입니다.

for i in random_array_10: 
print i 

time.sleep(2) 

print "Insertion Sort" 

with timer.Timer() as t: 
    insertion_sort_array = sorts.insertion_sort(random_array_10).isort() 

print t.interval 

for i in random_array_10: 
    print i 

여기 내 삽입 정렬 클래스입니다

class insertion_sort(): 

    def __init__(self, array): 
     self.array = array 

    def isort(self): 
     for i in range(1, len(self.array)): 
      temp = self.array[i] 
      k = i 
      while k > 0 and temp < self.array[k-1]: 
       self.array[k] = self.array[k-1] 
       k = k-1 
      self.array[k] = temp 
     return self.array 

답변

1

모두 self.arrayarray는 동일한 개체 (같은 변경 가능한 목록)를 가리키는. 목록의 복사본을 만들려면 __init__list() 생성자를 사용할 수 있습니다

self.array = list(array) 

을 플러스 측면으로, 그것은 다른 반복 가능 객체가 삽입 정렬에 대한 입력으로 사용할 수 있습니다.

+1

그가 이것을한다면 그는 배열을 복사하고 정렬하는 타이밍이 될 것입니다. – U2EF1