2014-01-29 2 views
0

의사 코드를 작성하고 내 기능의 실행 시간을 분석해야합니다.의사 코드 배열 길이 또는 크기가 실행 시간에 영향을 줍니까?

2 개의 내림차순 정렬 된 배열 및 1 개의 정수 k 이 주어진 다음 2 개 배열의 합집합에서 k 번째로 큰 숫자를 찾으라는 메시지가 표시됩니다.

과제물이 아직 전달되지 않았으므로 여기에 코드를 게시 할 수 없어 죄송합니다. 내 코드를 실행했습니다. 나는 2 개 배열이 비어 주어진 경우 K> 합 (arraylen (A & B)) , 또는 시나리오와 같은 시나리오를 처리해야하는 경우 내가 말 모르겠어 ... :

는 질문 한 몇 가지 결함이있다 해야한다면, 어떤 반환 값을 사용해야합니까? -1? k 번째 th가 -1 일 때 정확하게 .... 나는 불확실하다. 한편, sizeof이의 구성 요소하지 않을 수도 있습니다 - 가 :

질문 2 : 나는 배열의 길이를 얻기 위해 노력 , 내 친구가 있음을 지적를 sizeof (ArrayA)/4 (C++를) 사용 pseudoCode, ArrayA.length()와 같이 사용해야 할 수도 있습니다. - 길이()를 사용하면 어레이가 필요하므로 O (k) 대신 O (n)을 사용합니다. 길이를 얻기 위해 완전히 자체적으로. 그의 요점은 사실입니까? 그렇다면 O (k) 일 수 있도록 코드를 어떻게 수정해야합니까? 도와주세요,

감사합니다. 고마워.

답변

0

의사 코드를 사용하고 있습니다. 의사 코드는 C++처럼 보일 수 없습니다.

과제 나 수업 시간에 주어진만큼 많은 정보를 사용하고 가능한 한 적은 가정을해야합니다. 학교 과제물에 대한 의사 코드를 작성한 나의 경험에서, 배열의 길이를 얻는 것은 O (1) 시간이라고 가정하는 것이 허용됩니다.

과제가 k에 대한 범위를 말해 주면 좋겠지 만 언급하지 않은 경우 언급 한 것처럼 사례를 확인해야합니다. k가 유효하지 않은 경우 예외를 발생시키는 것이 허용 가능하다고 생각합니다. 그 중 하나 또는 특정 상황에 대해 프로그램의 동작이 명시되지 않았다는 것을 언급 할 수 있습니다. 일반적으로 할당에 언급되지 않은 사례를 처리하는 방법은 너무 중요하지 않지만 어떤 방식 으로든 처리하는 것이 좋습니다.