ในปัญหานี้ เราได้รับอัลกอริธึมการเรียงลำดับและตัวเลข n งานของเราคือพิมพ์อาร์เรย์ขององค์ประกอบ n ที่ไม่สามารถจัดเรียงตามอัลกอริทึมได้ นั่นคืออัลกอริทึมจะล้มเหลว
อัลกอริทึม
loop i from 1 to n-1 loop j from i to n-1 if a[j]>a[i+1] swap(a[i], a[j+1])
มาดูอัลกอริธึมการเรียงลำดับนี้กัน โดยใช้สองลูปที่ซ้อนกัน ตัวนอกจะเริ่มต้นจาก 1 ถึง n-1 และตัวในจาก i ถึง n-1 และจะตรวจสอบค่าขององค์ประกอบวงในและองค์ประกอบวงนอกในการวนซ้ำแต่ละครั้งและสลับออกจากองค์ประกอบลำดับ
ดังนั้น อัลกอริธึมนี้จะล้มเหลวในกรณีที่องค์ประกอบถูกจัดเรียงในลำดับที่กลับกัน นอกจากนี้ เราสามารถหาวิธีแก้ปัญหาได้ก็ต่อเมื่อ n<=2.
So, for n = 5. Output : 5 4 3 2 1 Time complexity − O(N)
ตัวอย่าง
รหัสแสดงการใช้งานโซลูชันของเรา
#include <iostream> using namespace std; void invalidCase(int n) { if (n <= 2) { cout << -1; return; } for (int i = n; i >= 1; i--) cout<<i<<" "; } int main() { int n = 6; cout<<"The case in which the algorithm goes invalid for "<<n<<" element array is :\n"; invalidCase(n); return 0; }
ผลลัพธ์
กรณีที่อัลกอริธึมใช้ไม่ได้สำหรับอาร์เรย์ 6 องค์ประกอบคือ −
6 5 4 3 2 1