ในปัญหานี้ เราได้รับอัลกอริธึมการเรียงลำดับและตัวเลข 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