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

คำถามความซับซ้อนของการจัดเรียงเวลาการแทรกใน C ++


ความซับซ้อนของเวลาของการเรียงลำดับการแทรกคืออะไร

ความซับซ้อนของเวลา คือระยะเวลาที่ชุดโค้ดหรืออัลกอริทึมใช้ในการประมวลผลหรือเรียกใช้เป็นฟังก์ชันของจำนวนอินพุต

สำหรับการเรียงลำดับการแทรก ความซับซ้อนของเวลาจะอยู่ในลำดับ O(n) เช่น O ใหญ่ของ n ในสถานการณ์ที่ดีที่สุด และในกรณีเฉลี่ยหรือกรณีที่เลวร้ายที่สุด ความซับซ้อนอยู่ในลำดับ O(n 2 )

เวลาของการเรียงลำดับจะเป็นอย่างไรเมื่ออัลกอริทึมการเรียงลำดับการแทรกถูกนำไปใช้กับอาร์เรย์ขนาด n ของรูปแบบต่อไปนี้:6, 5, 8, 7, 10, 9 …… I, i-1

ความซับซ้อนของเวลาของการจัดเรียงรูปแบบอาร์เรย์ด้านบนคือ O(n) มาดูอัลกอริธึมนี้กันอย่างระมัดระวัง โดยที่คู่ทั้งหมดจะถูกสลับจากตำแหน่งเดิม กล่าวคือ ตำแหน่งขององค์ประกอบ 1 และองค์ประกอบ 2 มีการแลกเปลี่ยนกัน 3 และ 4 มีการแลกเปลี่ยนกัน เป็นต้น ดังนั้น ในขณะที่การเรียงลำดับอัลกอริธึมจะใช้เวลาดำเนินการเพียงครั้งเดียว n ครั้งเพื่อจัดเรียงอัลกอริธึมนี้

กำหนดประเภทการแทรกและเขียนโค้ดสำหรับการจัดเรียงการแทรกหรือไม่

การเรียงลำดับการแทรกคืออัลกอริธึมการเรียงลำดับที่จัดเรียงโครงสร้างข้อมูลโดยการวางองค์ประกอบที่ตำแหน่งในอาร์เรย์ที่จัดเรียง

รหัสด้านล่างแสดงฟังก์ชันสำหรับการเรียงลำดับการแทรก -

ตัวอย่าง

void insertionSort(int arr[], int n) {
   for (int i = 1; i < n; i++){
      int element = arr[i];
      int j = i-1;
      while (j >= 0 && arr[j] > element){
         arr[j+1] = arr[j];
         j = j-1;
      }
      arr[j+1] = element;
   }
}