2017-05-03 1 views
-2

내 삽입 코드에 대한 작업이 터무니없이 많은 숫자를 얻고있는 내 코드에 어떤 문제가 있는지 알 수 없습니다. 도움이 필요했다.연산 삽입 버블 선택 계산

int insertionSort(int arr[], int n, int &operations) 
{ 
    clock_t start = clock(); 
    int i, key, j; 
    for (i = 1; i < n; i++) 
    { 
     key = arr[i]; 
     j = i - 1; 

     while (j >= 0 && arr[j] > key) 
     { 
      arr[j + 1] = arr[j]; 
      j = j - 1; 
      operations++; 
     } 
     arr[j + 1] = key; 
    } 
    clock_t end = clock(); 
    return end - start; 
} 
+0

사용자가 설정하지 않나요을'작업 = 0' 전에 루핑? 지금 당장은, 함수가 호출되었을 때 어떤 값을 가졌던지를 추가하는 것입니다. – PaulMcKenzie

답변

0

이 게시물을 참조 : How to count comparisons and swaps in insertion sort? (JAVA)

당신은 같은 작업의 수를 셀 수 :

long int operations=0; 
int insertionSort(int arr[], int n, int &operations) 
{ 
    clock_t start = clock(); 
    int i, key, j; 
    for (i = 1; i < n; i++) 
    { 
     key = arr[i]; 
     j = i - 1; 

     while (1) 
     { 
      operations++; 
      if((j>=0) && (arr[j]>key)){ 
       arr[j + 1] = arr[j]; 
       j = j - 1; 
      } 
      else break; 
     } 
     arr[j + 1] = key; 
    } 
    clock_t end = clock(); 
    return end - start; 
} 
+0

그리고'operations'가 터무니없는 숫자와 함께 나오면 해결책이 작동하지 않습니다. '연산'이 함수 외부에서 초기화되었다는 표시는 없습니다. – PaulMcKenzie

+0

@PaulMcKenzie 님의 의견에 따른 변경. 고맙습니다. –