Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์กรณีที่อัลกอริธึมการเรียงลำดับที่กำหนดล้มเหลวใน C++


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