# [C++ 언어-기초실습-6] 간단히 오름 or 내림 차순 정렬하기? --- - 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/ - 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php --- 정렬 알고리즘을 찾아서 오름 or 내림 정렬 코딩을 하지 말고 우선 간단한 방식으로 올름 or 내림 차순 정렬을 실습 해보도록 하죠. ## 1. 정렬 알고리즘 --- 특정 배열을 값들을 오름 or 내림 차순으로 정렬을 수행을 한다는 전재 하에서 한번 코딩을 만들어 볼까요. ``` for(int i=0;i<N;i++){ arr[i]; } ``` 이렇게 하면 순차적으로 배열 arr[i]을 불러 올 수 있습니다. 정렬을 하기 위해서 배열에서 두개의 위치를 비교하여 서로의 위치를 교환하여 오름 or 내림 차순을 만들 수 있습니다. 그러면, 두개의 위치를 비교하기 위해서는 2중 for문을 사용해야 합니다. ``` for(int i=0;i<N-1;i++){ for(int j=i+1;j<N;j++){ if(arr[i]>arr[j]){ 교환; } } } ``` 이렇게 두 위치를 비교하여 정렬을 수행합니다. 여기서, 어떤 조건 일때 교환을 할거냐에 따라서 오름 차순이 되거나 내림 차순이 됩니다. **[오름차순]** : 앞에 값이 뒤에 값보다 크면 교환 하여 앞에 값을 뒤로 이동 시킵니다. ``` if(arr[i]>arr[j]){ } ``` **[내림차순]** : 앞에 값이 뒤에 값보다 작으면 교환 하여 앞에 값을 뒤로 이동 시킵니다. ``` if(arr[i]<arr[j]){ } ``` 두 위치에 있는 값을 비교하여 크냐 or 작냐에 따라 오름 or 내림 차순이 됩니다. 교환은 다음과 같습니다. 오름 차순으로 하면, ``` if(arr[i]>arr[j]){ tmep=arr[i]; arr[j]=arr[j]; arr[j]=tmep; } ``` 이렇게 2개의 값을 교환하기 위해서는 어떤 한개의 값을 임시 저장 할 수 있는 변수를 하나 사용하면 됩니다. 첫번째 값을 임시저장 공간에 저장해 놓고 첫번째 위치에 두번째 값을 저장하고 두번째 위치는 방금 저장한 첫번째 값을 두번째 위치에 저장하면 됩니다. 위 코딩은 오름 차순 정렬이고 내림 차순이면 if문의 비교 방향을 반대로 하면 됩니다. ## 2. 코딩 --- 그러면 실제로 오름 or 내림 차순으로 정렬 되는지 테스트 해 볼까요. - 조건 : 오름 차순 정렬을 수행하시오. **[전체소스]** ``` #include <iostream> using namespace std; int main(int argc, char** argv) { int arr[10]={1,30,22,5,7,29,100,33,99,77}; const int N=10; int temp=0; cout<<"원본 데이터 : "; for(int i=0;i<N;i++){ cout<<arr[i]; if(i!=N-1) cout<<" "; } cout<<endl; for(int i=0;i<N-1;i++){ for(int j=i+1;j<N;j++){ if(arr[i]>arr[j]){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } cout<<"오름차순 정렬 : "; for(int i=0;i<N;i++){ cout<<arr[i]; if(i!=N-1) cout<<" "; } cout<<endl; return 0; } ``` 위 코딩에서 정렬 알고리즘은 이게 전부 입니다. ``` for(int i=0;i<N-1;i++){ for(int j=i+1;j<N;j++){ if(arr[i]>arr[j]){ temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } ``` 여기서 if문에서 오름 or 내림차순이 결정 됩니다. ``` if(arr[i]>arr[j]){ } //오름차순 정렬 ``` or ``` if(arr[i]<arr[j]){ } //내림차순 정렬 ``` 실습은 오름차순입니다. 내림차순으로 위와 같이 변경하여 실행 시켜 보세요. **[결과]**  ## 마무리 --- 과거 정보처리기사 자격증을 취급 할 때 데이터를 정렬을 간단히 2중 for문을 이용하여 코딩 했던 기억이 잠깐 떠오르네요. 지금은 정보처리기사 시험 제도가 바뀌었지만 예전에는 간단히 데이터를 정렬 할 때 위 코딩을 많이 사용합니다. 사실 정렬 알고리즘의 종류는 많아서 위 방법으로 해도 되고 다른 정렬 알고리즘을 사용해도 됩니다. 하지만 간단히 배열의 개념을 생각하고 순차적으로 비교해 봐여 정렬을 시킬 때 가볍게 로직을 떠올 리기에 위와 같은 코딩이 좋습니다. 암튼 초기에는 단순한 코딩이 좋기 때문에 시각복잡도 같은 건 생각하지 말고 편하게 코딩을 해 보세요. --- ##### <sub> **Sponsored ( Powered by [dclick](https://www.dclick.io) )** </sub> [](https://api.dclick.io/v1/c?x=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoiY29kaW5nbWFuIiwicyI6ImMtNi1vci0tMTU2MTA3NzY5MzcyNiIsImEiOlsiaS0zNzYiXSwidXJsIjoiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5hcHAuc20uc3BlYWtpbmdtYXN0ZXIiLCJpYXQiOjE1NjEwNzc2OTMsImV4cCI6MTg3NjQzNzY5M30.ufNHN_0kn7s41nnd_9cNlDw-5YFy97UTv4vorP3eC5s)
author | codingman | ||||||
---|---|---|---|---|---|---|---|
permlink | c-6-or--1561077693726 | ||||||
category | kr-dev | ||||||
json_metadata | {"tags":["kr-dev","jjm","busy","kr","roadofrich"],"app":"busy/2.5.6","format":"markdown","community":"busy","users":[],"links":["https://sourceforge.net/projects/orwelldevcpp/","https://www.tutorialspoint.com/compile_c_online.php","https://www.dclick.io","https://api.dclick.io/v1/c?x=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoiY29kaW5nbWFuIiwicyI6ImMtNi1vci0tMTU2MTA3NzY5MzcyNiIsImEiOlsiaS0zNzYiXSwidXJsIjoiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5hcHAuc20uc3BlYWtpbmdtYXN0ZXIiLCJpYXQiOjE1NjEwNzc2OTMsImV4cCI6MTg3NjQzNzY5M30.ufNHN_0kn7s41nnd_9cNlDw-5YFy97UTv4vorP3eC5s"],"image":["https://cdn.steemitimages.com/DQmZKDQjWAB6ESEXDaGFuZ8QvHipVpUef4DC2bJHoZJaTMy/a1.jpg","https://s3.ap-northeast-2.amazonaws.com/dclick/image/jacobyu/1560603830043.png"]} | ||||||
created | 2019-06-21 00:41:33 | ||||||
last_update | 2019-06-21 00:42:21 | ||||||
depth | 0 | ||||||
children | 2 | ||||||
last_payout | 2019-06-28 00:41:33 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 1.672 HBD | ||||||
curator_payout_value | 0.547 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 3,131 | ||||||
author_reputation | 23,188,231,710,844 | ||||||
root_title | "[C++ 언어-기초실습-6] 간단히 오름 or 내림 차순 정렬하기?" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 87,007,968 | ||||||
net_rshares | 4,226,112,418,577 | ||||||
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
bullionstackers | 0 | 20,689,178,133 | 3% | ||
busy.pay | 0 | 364,821,766,706 | 1.78% | ||
neojew | 0 | 10,780,265,839 | 100% | ||
skan | 0 | 532,299,917,013 | 24% | ||
jhy2246 | 0 | 18,355,952,894 | 10% | ||
stylegold | 0 | 2,730,544,793 | 100% | ||
virus707 | 0 | 210,902,950,190 | 1% | ||
bramd | 0 | 1,665,471,852,827 | 20% | ||
urobotics | 0 | 21,449,804,196 | 100% | ||
dj-on-steem | 0 | 7,520,351,281 | 31% | ||
codingman | 0 | 57,381,694,028 | 100% | ||
sintai | 0 | 39,894,176,870 | 100% | ||
gasigogi | 0 | 57,416,710,372 | 50% | ||
marsswim | 0 | 17,686,721,373 | 50% | ||
matildah | 0 | 54,807,166 | 0.5% | ||
dorian-lee | 0 | 12,919,719,632 | 100% | ||
gghite | 0 | 64,794,165,308 | 15% | ||
good21 | 0 | 5,798,537,583 | 100% | ||
anpigon | 0 | 25,613,504,340 | 100% | ||
glory7 | 0 | 14,606,417,493 | 10% | ||
sindong | 0 | 138,233,206,857 | 20% | ||
talken | 0 | 1,247,005,101 | 100% | ||
steemory | 0 | 4,569,780,506 | 100% | ||
pigoncchio | 0 | 939,831,719 | 100% | ||
roadofrich | 0 | 929,933,556,357 | 10% |
Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.
author | virus707 |
---|---|
permlink | re-c-6-or--1561077693726-1561104125 |
category | kr-dev |
json_metadata | {"tags":["jjm"]} |
created | 2019-06-21 08:01:57 |
last_update | 2019-06-21 08:01:57 |
depth | 1 |
children | 1 |
last_payout | 2019-06-28 08:01:57 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 203 |
author_reputation | 557,563,606,581,756 |
root_title | "[C++ 언어-기초실습-6] 간단히 오름 or 내림 차순 정렬하기?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 87,028,833 |
net_rshares | 0 |
Thank you
author | codingman |
---|---|
permlink | ptfw4o |
category | kr-dev |
json_metadata | {"tags":["kr-dev"],"app":"steemit/0.1"} |
created | 2019-06-21 08:12:24 |
last_update | 2019-06-21 08:12:24 |
depth | 2 |
children | 0 |
last_payout | 2019-06-28 08:12:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 9 |
author_reputation | 23,188,231,710,844 |
root_title | "[C++ 언어-기초실습-6] 간단히 오름 or 내림 차순 정렬하기?" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 87,029,238 |
net_rshares | 0 |