주장
만 세 가지 요소의 배열을 정렬하려면 0,1,2
사고
방법 1 : 상기 어레이를 가로 질러, 보조 배열의 세 가지 요소의 수를 보유하고 (2 회 통과) 쓰기
방법 2 : 아날로그 세 방향 빠른 행은 다시 순서가되어 순회하는
실현
방법 1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 공극 sortColors (벡터 < INT > & nums) { 2 INT의 개수 [ 3 ] = { 0 }; 3 대 ( INT가 나는 = 0 ; I <nums.size을 (); I ++ ) { 4 어설 (NUM [I]> = 0 && nums [I] <= 2 ); 5 카운트 [nums [I] ++ ; 6 } 7 8 INT의 인덱스 = 0 ; 9 대 ( INT가 나는 = 0 ; I <카운트 [ 0]; I ++ ) { 10 nums [인덱스 ++] = 0 ; 11 대 ( INT가 나는 = 0 ; I <카운트 [ 1 ]; I ++ ) { 12 nums [인덱스 ++] = 1 ; 13 대 ( INT가 나는 = 0 ; I <카운트 [ 2 ]; I ++ ) { 14 nums [인덱스 ++] = 2 ; 15 } 16 }
방법 2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 공극 sortColors1 (벡터 < INT > & nums) { 2 INT 제로 = - 1 ; 3 INT 두 = nums.size (); 4 대 ( INT 난 = 0 ; I < 두) { 도 5 의 경우 (nums [I] == 1 ) 6 I ++ ; (7) 그 밖의 경우 (nums [I] == 2 ) { 8 개의 - ; 9 스왑 (nums [I] nums [TWO]); 10 } 다른{ 11 어설 (nums [I] == 0 ); 12 제로 ++ ; 13 스왑 (nums [제로] nums [I]); 14 I ++ ; 15 } 16 } 17 }
유사 문제
배열 215 K의 큰 요소