Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 대체 정렬

<시간/>

첫 번째 요소가 배열의 최대값이고 정렬된 배열의 두 번째 요소가 최소값, 세 번째 요소가 두 번째 최소값, 네 번째 요소가 두 번째 최대값이 되도록 정수 배열의 요소를 정렬합니다. 배열하고 계속 진행합니다.

개념을 더 잘 이해할 수 있도록 예를 들어 보겠습니다.

Input :4 1 8 2 9 3 7Output :9 1 8 2 7 3 4Explanation :정렬된 방식의 요소는 1 2 3 4 7 8 9입니다. 이제 원하는 방식, 즉 대체 정렬 방식으로 생성해 보겠습니다. 형태. 따라서 배열의 가장 큰 요소는 먼저 배열의 가장 작은 요소인 9 다음에 1이 옵니다. 즉 1이 다음에 8, 2, 7, 3, 4가 옵니다.

이제 개념을 이해했으므로 이 문제를 해결할 솔루션을 개발할 수 있습니다. 따라서 한 가지 가능한 솔루션은 배열을 정렬하고 이 정렬된 배열의 마지막 요소와 첫 번째 요소를 인쇄하는 것입니다. 이 솔루션을 기반으로 알고리즘을 만들어 보겠습니다.

알고리즘

1단계:배열을 정렬합니다. 2단계:시작에서 탐색하기 위한 포인터와 끝에서 탐색하기 위한 포인터 2개를 만듭니다. 3단계:포인터 값을 대체 형식으로 인쇄하고 반복기의 값을 늘립니다. 

예시

#include 이름 공간 사용 std;void alternateSort(int arr[], int n);void swap(int *xp, int *yp);void selectionSort(int arr[], int n);int main (){ 정수 arr[] ={ 4,1,8,2,9,3,7}; 정수 n =sizeof(arr)/sizeof(arr[0]); 대체정렬(arr,n); return 0;} void alternateSort(int arr[], int n){ selectionSort(arr, n); 정수 i =0, j =n-1; 동안 (i  

출력

9 1 8 2 7 3 4