2017-02-17 1 views
-1

숫자를 입력하고 C에서 오름차순으로 인쇄하는 프로그램을 작성했습니다. 시도했지만 제대로 작동하지 않습니다. 누구든지 올바른 방법을 말해 줄 수 있습니까?숫자를 오름차순으로 정렬

정렬 작업을 시도했지만 올바르게 작동하지 않습니다. 그것을하는 방법?

코드 :

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

int main() 
{ 
    int highest,temp=0; //decleartion 
    int a[5]; 
    int i; 
    for(i=0;i<5;i++) 
    { 
     scanf("%d",&a[i]); //taking input 
    } 
    highest=a[0]; 
    for(i=1;i<5;i++) 
    { 
     if(a[i]<a[0]) 
     { 
      temp=a[0]; 
      a[0]=a[i]; 
      a[i]=temp; //comparing 
     } 
    } 
    for(i=0;i<5;i++) 
    { 
     printf("%d\n",a[i]); //printing 
    } 
    return 0; 
} 
+1

을 시도 버블 정렬 기술에서 읽기 및 코드를 다시 구현하는 시도 : – Cherubim

+0

가 최대의 요소를 결정하고를 반복 할 수 있습니다 나머지 요소에 대한 최대 값을 결정하는 프로세스. – BLUEPIXY

+0

스택 오버플로에 오신 것을 환영합니다. 여기서 '감사합니다'라고 말하면 가장 좋은 방법은 위의 좋은 질문과 유용한 답변 (충분한 답변을 얻으려면 명을 얻은 것임)이며, 질문에 대한 가장 유용한 답변을 수락하면됩니다. (이는 또한 평판에 대한 귀하의 에 약간의 도움이됩니다). [정보] 페이지 및 [질문은 어떻게합니까? 여기에 있습니까?] (http://stackoverflow.com/help/how-to-ask) 및 [내 질문에 대한 대답은 무엇을해야합니까? ?] (http://stackoverflow.com/help/someone-answers) –

답변

1

귀하의 코드는 처음 두 요소의 비교에만 작동합니다.

이 시도 -

for (i = 0; i < n; ++i) 
{ 
    for (j = i + 1; j < n; ++j) 
    { 
     if (number[i] > number[j]) 
     { 
      temp = number[i]; 
      number[i] = number[j]; 
      number[j] = temp; 
      } 
     } 
    } 
+0

덕분에 많은 도움이! –

+0

환영합니다 .. –

0

또한 this-

for (i = 0; i < n; ++i) 
{ 
    for (j = i + 1; j < n; ++j) 
    { 
     if (number[i] > number[j]) 
     { 
      number[i] = number[i] + number[j]; 
      number[j] = number[i] - number[j]; 
      number[i] = number[i] - number[j]; 
     } 
    } 
} 
+0

배열의 두 요소를 바꿔주는 것은 매우 바보 같은 방법입니다. 오버 플로우가 완전히 불필요하게 발생할 위험이 있으며, 3 개의 산술 연산 비용이 발생하여 하나의 임시 변수보다 많은 공간을 차지합니다. –

관련 문제