본문 바로가기

알고리즘문제풀이

next_permutation STL 구현

반응형
int next_permutation(int n) //stl구현
{
	int i = n - 1;
	while (i > 0 && arr[i] <= arr[i - 1])i--; //어디까지가 감소수열?
	if (i <= 0)
	{
		return -1; //전체가 감소수열이다. 54321
	}
	int j = n - 1;
	while (arr[i - 1] >= arr[j])j--; //i-1이후와 그다음 조건에맞는 피벗찾아서 스왑
	swap(i - 1, j);
	//i-1 이후에 뒤집기
	j = n - 1;
	while (i < j)
	{
		swap(i, j);
		i++;
		j--;
	}
}

 

반응형