การเรียงลำดับองค์ประกอบของอาร์เรย์จำนวนเต็มในลักษณะที่องค์ประกอบแรกเป็นค่าสูงสุดของอาร์เรย์ และองค์ประกอบที่สองของอาร์เรย์ที่จัดเรียงเป็นค่าต่ำสุด องค์ประกอบที่สามเป็นค่าต่ำสุดที่สอง ส่วนที่สี่คือจำนวนสูงสุดที่สองของ อาร์เรย์และไปต่อ
มาดูตัวอย่างเพื่อทำความเข้าใจแนวคิดกันดีกว่า
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 :สร้างพอยน์เตอร์สองตัวหนึ่งตัวสำหรับการข้ามจากจุดเริ่มต้นและตัวชี้อื่นๆ สำหรับการข้ามจากจุดสิ้นสุดขั้นตอนที่ 3 :พิมพ์ค่าของตัวชี้ในรูปแบบอื่นและเพิ่มค่าของตัววนซ้ำก่อน>ตัวอย่าง
#includeใช้เนมสเปซ std;void AlternativeSort(int arr[], int n);void swap(int *xp, int *yp);void selectionSort(int arr[], int n);int main (){ int arr[] ={ 4,1,8,2,9,3,7}; int n =sizeof(arr)/sizeof(arr[0]); ทางเลือกเรียงลำดับ(arr, n); คืนค่า 0;} เป็นโมฆะ AlternativeSort(int arr[], int n){ selectionSort(arr, n); int i =0, j =n-1; ในขณะที่ (i ผลลัพธ์
9 1 8 2 7 3 4