2017-11-19 3 views
-1

순환 방법 (예 : 루프 없음)을 사용하여 버블 정렬을 재 작성하고 재귀 정렬이 실행되기 전과 후에 배열을 인쇄하는 인쇄 배열 함수를 다시 작성하십시오 . 배열은 :원하는 출력을 얻기 위해 루프가없는 순환을 사용하는 프로그램 작성 c

INT 진 [] = {19, 62, 45, 9, 4, 99, 82, 34, 59, 102}

명령 행 인수를 판독하고, 두 처리 함수를 작성할 스위치 : "-min"및 "-max". "-min"을 선택하면 배열이 최소에서 최대로 정렬됩니다. "-max"를 선택하면 배열이 최대에서 최소로 정렬됩니다.

rsort.exe라는 프로그램의 릴리스 버전을 사용하여 Windows cmd 프롬프트에서 출력을 생성하십시오. 명령 줄에 인수가 제공되지 않으면 다음과 비슷한 도움말 메시지를 인쇄하십시오.

사용법 : c :> rsort.exe WHERE -min [최소값] 또는 -max [최대 값

의견의 코드.

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102 }; 
    int find_max(int *array,int max,int i); 
    if (i>=0) 
    { 
     if (array[i]>array[max]) 
     { 
      find_min(array,i,i-1); 
     } 
     find_min(array,max,i-1); 
    } 
    return max; 
} 
+0

메신저 붙어 내 출력이 나에게이 프로그램은 C 언어에 있어야 – John

+0

을 혼동하지 C++ 당신은 그것을 오히려 의견보다, 포맷 할 수 있습니다 질문의 코드를 포함해야한다 – John

+1

감사합니다 어디 수있는 ' 티. 나는 이번에 너를 위해 해왔다. 앞으로도 직접하십시오. 이제 댓글을 정리하십시오. C 태그는 C++가 아니라 C를 원한다고 말합니다. –

답변

0

내가 방금 만든 빠르고 실수 재귀 버블 정렬을 게시 할 예정입니다. find_max은 오름차순으로 정렬됩니다. 내림차순 정렬을 원할 경우 더 큰 값 대신 낮은 값의 값으로 전환하면됩니다.

find_max가 호출 될 때마다 나는 spos을 인쇄하여 작업이 어떻게 생겼는지 힌트를 제공합니다.

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 


int find_max(int [], size_t, int, int); 

int main(void) 
{ 
    int ary[] = { 19, 62, 45, 9, 4, 99, 82, 34, 59, 102}; 

    find_max(ary, sizeof(ary)/sizeof(int), 0, 0); 

    for(int i=0; i<sizeof(ary)/sizeof(int); i++) 
    { 
     printf("%d \n", ary[i]); 
    } 
    return 0; 
} 

int find_max(int numbers[], size_t len, int spos, int recurs) 
{ 

    int temp_len = len - recurs; 

    if(numbers[spos]>numbers[spos+1]) 
    { 
     numbers[spos]^=numbers[spos+1]; 
     numbers[spos+1]^=numbers[spos]; 
     numbers[spos]^=numbers[spos+1]; 
    } 

    printf("%d position \n", spos); 

    if(recurs == (len-2)) 
    { 
     return 0; 
    } 

    if(spos == (temp_len-2)) 
    { 
     find_max(numbers, len, 0, recurs+1); 
    } 
    else 
    { 
     find_max(numbers, len, spos+1, recurs); 
    } 
}