Programming/Data Structure and Algorithm

삽입정렬 예제 주석포함 c++

fishersheep 2022. 1. 20. 14:04
반응형
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stack>
using namespace std;

void insertionSort(int arr[], int n)	//삽입정렬함수
{
	int temp = 0;	
	int j;

	for (int i = 1; i < n; i++)	//배열의 1번인덱스부터
	{
		temp = arr[i];	//temp에 저장

		for (j = i - 1; j >= 0 && arr[j] > temp; j--)	//i보다 작은 인덱스와 비교해서 arr[j]가 temp보다 크다면
		{
			arr[j + 1] = arr[j];	//오른쪽으로 값 이동
		}
		arr[j+1] = temp;	//위에 for문 조건에 맞지않으면 temp는 원래 있던 자리에 값에저장되고 조건에 맞다면 j--된 j에서 1을 더한 인덱스에 temp가 저장됨으로 정수의 위치가 변경된다.
	}

}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n;	
	cin >> n;	//배열의 개수입력

	int* arr = new int[n];

	for (int i = 0; i < n; i++)	//배열의 들어갈 정수 입력
		cin >> arr[i];

	insertionSort(arr, n);	//오름차순정렬

	for (int i = 0; i < n; i++)	//결과출력
		cout << arr[i] << " ";

	return 0;
}
반응형