2015-01-06 2 views
-5
// Number Sorting Algorithm - Trey Taylor 2014 
#include <iostream> 
#include <cstdlib> 
#include <string> 

using namespace std; 
    int main() { 
     int numbersort [] = {200, 85, 63, 4} 
     cout << "The numbers scrambled are: "; 
     cout << numbersort[0] << ", "; 
     cout << numbersort[1] << ", "; 
     cout << numbersort[2] << ", "; 
     cout << numbersort[3] << ", " << endl; 
     firstlast: 
     if (numbersort[0] > numbersort[1]) { 
      int temp = 0; 
      temp = numbersort[0]; 
      numbersort[0] = numbersort[1]; 
      numbersort[1] = temp; 
     } 
      if (numbersort[1] > numbersort[2]) { 
       int temp = 0; 
       temp = numbersort[1]; 
       numbersort[1] = numbersort[2]; 
       numbersort[2] = temp; 
      } 
       if (numbersort[2] > numbersort[3]) { 
        int temp = 0; 
        temp = numbersort[2]; 
        numbersort[2] = numbersort [3]; 
        numbersort[3] = temp; 
       } 
         while (numbersort[0] > numbersort[1]) { 
         goto firstlast; 
       } 
     cout << "The numbers unscrambled are: "; 
     cout << numbersort[0] << ", "; 
     cout << numbersort[1] << ", "; 
     cout << numbersort[2] << ", "; 
     cout << numbersort[3] << ", "; 
} 

for 또는 while 루프를 사용하여 배열의 숫자를 왼쪽에서 오른쪽으로 오름차순으로 재배치하는 방법이 있는지 아는 사람이 있습니까? 3 만약 문이 같은어쨌든이 정렬 알고리즘을보다 효율적으로/더 짧게 만들 수 있습니다. C++

+3

이 http://en.cppreference.com/w/cpp (최단 용액 ['표준 : sort']을 호출하는 –

+3

을 http://codereview.stackexchange.com/에 속하는 것/알고리즘/정렬). 예를 보려면 링크를 참조하십시오. – 5gon12eder

+3

다른 사람이 코드를 검토하도록하려면 [codereview.se] –

답변

2

당신은 표준 : : 정렬하거나 거품 정렬 알고리즘 (link how it works)를 사용할 수 있습니다. 알고리즘 체크는 다음 번호부터 더 큰 루프의 현재 번호입니다. 그것이 배열에있는 그 수를 바꾸는 경우에. 결국 배열의 끝에서 가장 큰 숫자를 얻고 배열의 시작점에서 가장 작은 숫자를 얻습니다.

int main() 
{ 
    int numbersort[] = { 200, 85, 63, 4 }; 
    int temp = 0; 
    // This loop sorts all numbers in the array 
    for (int z = 0; z < 4; ++z) 
    { 
     // This loop sorts only one number to the end 
     for (int i = 0; i < 3; ++i) 
     { 
      if (numbersort[i] > numbersort[i + 1]) 
      { 
       temp = numbersort[i]; 
       numbersort[i] = numbersort[i + 1]; 
       numbersort[i + 1] = temp; 
      } 
     } 
    } 

    cout << "Sorted numbers" << endl; 
    for (int i = 0; i < 4; ++i) 
    { 
     cout << numbersort[i] << endl; 
    } 

    system("pause"); 
    return 0; 
} 
1

뭔가 :

i = 0; 
while (i < (sizeof(numbersort)/sizeof(numbersort[0])) - 1) 
{ 
    if (numbersort[i] >= numbersort[i + 1]) 
    { 
    std::swap(numbersort[i], numbersort[i + 1]); 
    i = 0; 
    } 
    else 
    { 
    ++i; 
    } 
} 
관련 문제