728x90
https://www.acmicpc.net/problem/2750
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
<선택 정렬>
#include <iostream>
using namespace std;
int main() {
int n, arr[1001], swap;
cin>>n;
for(int i=0; i<n; i++)
cin>>arr[i];
for(int i=0; i<n; i++)
{
for(int j=i; j<n; j++)
{
if(arr[i]>arr[j])
{
swap=arr[i];
arr[i]=arr[j];
arr[j]=swap;
}
}
}
for(int i=0; i<n; i++)
cout<<arr[i]<<" ";
}
<삽입 정렬>
#include <iostream>
using namespace std;
int arr[1001], n, tmp, j;
int main() {
cin>>n;
for(int i=0; i<n; i++)
cin>>arr[i];
for(int i=0; i<n-1; i++)
{
j=i;
while(j>=0 && arr[j] > arr[j+1]){
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
j--;
}
}
for(int i=0; i<n; i++)
{
cout<<arr[i]<<" ";
}
}
<계수정렬>
#include <stdio.h>
int n, input;
int r[10001];
int i, j;
int main(void) {
scanf("%d", &n);
for(i=0; i<n; i++)
{
scanf("%d", &input);
r[input]++;
}
for(i=0; i<10001; i++)
if(r[i])
for(j=0; j<r[i]; j++)
printf("%d\n",i);
}
728x90
댓글