2014-06-18 2 views
-1

이 코드는 Ritchie가 ANSI C로 작성한 것입니다.이 코드에는 내 의문의 여지가있는 주석을 사용했습니다. 또한 YouTube에서 쉘 정렬을 배웠고 실제로 작동하는 방법을 이해했지만이 코드는 이러한 루프를 매우 혼란스럽게합니다 .... 왜 그들은 gap = n/2를 사용 했습니까? 및 Plz은 ..... 여기에서하고 이러한 루프 :(C에서 쉘 코드를 설명하십시오.

void shellsort(int v[], int n) 
{ 
     int gap, i, j, temp; 

     for(gap= n/2; gap >0; gap /=2) // What is this gap /=2 
      for(i=gap; i<n; i++) 
       for(j= i-gap; j>= 0 && v[j]>v[j+gap]; j -=gap){ 
        temp= v[j]; 
        v[j]=v[j+gap]; 
        v[j+gap]=temp; 
       } 
} 

답변

1

예제 코드에서 프로그래밍 오류의 수를 거기 당신은 내가 생각?에서 읽고있는 책의 어떤 버전의 모든 방법 전까지 3은 무엇인가 에디션

gap은 for 루프 위에 선언 한 int와 같습니다. gap, i, j & temp 또한 정수입니다. 즉 정수 값 (예 : 1,2, 12, 586 등)

a/= b는 나눗셈이므로 리터럴 의미는 a = a/b입니다.

v & n이 무엇인지 궁금 할 수 있습니다.

int v []는 int 배열을 참조하므로 [] 안에 사용 된 모든 값은 해당 배열의 색인입니다 (예 : v [0], v [1], v [2], v [n]). ..

v & n은 쉘 소스 함수의 매개 변수로 선언되었으므로 함수를 호출 할 때 int 값뿐만 아니라 int 배열 값도 전달해야합니다. 당신은 C 책이있는 경우이 값없이 기능이 제대로

를 조작 할 수 없습니다, 모든 것을 당신은 C가 그 책 :

+0

2 판 ANSI C –

+0

A/= B에있을 것입니다에 대해 알고 부문 할당이 그렇게되어 필요 그 문자적인 의미는 a = a/b –

+0

이며 ANSI C의 최신판은 오류가없는 것입니까? –

관련 문제