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

ผลต่างที่อยู่ติดกันสูงสุดในอาร์เรย์ในรูปแบบที่จัดเรียงใน C++


เราได้รับอาร์เรย์ ไม่ต้องเรียงลำดับอาร์เรย์ ภารกิจคือการค้นหาความแตกต่างสูงสุดระหว่างองค์ประกอบที่อยู่ติดกันของอาร์เรย์นั้นในรูปแบบที่จัดเรียง ดังนั้นสิ่งแรกคือการเรียงลำดับอาร์เรย์ในลำดับที่เพิ่มขึ้นหรือลดลง จากนั้นเราจะวนซ้ำอาร์เรย์และคำนวณผลต่างที่อยู่ติดกันของ Arr[i+1]-Arr[i] จากนั้นสำหรับการทำซ้ำแต่ละครั้ง เราจะเปรียบเทียบความแตกต่างนี้กับความแตกต่างที่พบสูงสุดจนถึงตอนนี้

ป้อนข้อมูล − Arr[] =[ 1,5,10,2,7 ]

ผลลัพธ์ − ค่าความต่างที่อยู่ติดกันสูงสุดของอาร์เรย์ในรูปแบบการเรียงลำดับคือ 3

คำอธิบาย − เรียงลำดับ Arr[] ตามลำดับที่เพิ่มขึ้น =[ 1,2,5,7,10 ] ดังนั้นความแตกต่างที่อยู่ติดกันจึงเป็นดังนี้ -

Arr[1]-Arr[0]=1, Maximum Difference=1
Arr[2]-Arr[1]=3, Maximum Difference=3
Arr[3]-Arr[2]=2, Maximum Difference=3
Arr[4]-Arr[3]=3, Maximum Difference=3

ป้อนข้อมูล − Arr[] =[ 5,11,21,15,20 ]

ผลผลิต − ค่าความต่างที่อยู่ติดกันสูงสุดของอาร์เรย์ในรูปแบบการเรียงลำดับคือ 6

คำอธิบาย − เรียงลำดับ Arr[] ตามลำดับที่เพิ่มขึ้น =[ 5,11,15,20,21 ] ดังนั้นความแตกต่างที่อยู่ติดกันจึงเป็นดังนี้ -

Arr[1]-Arr[0]=6, Maximum Difference=6
Arr[2]-Arr[1]=4, Maximum Difference=6
Arr[3]-Arr[2]=5, Maximum Difference=6
Arr[4]-Arr[3]=1, Maximum Difference=6

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ใส่อาร์เรย์จำนวนเต็ม Arr[].

  • เรียงลำดับอาร์เรย์ในลำดับที่เพิ่มขึ้น ( การเรียงลำดับไม่สำคัญที่นี่ )

  • ประกาศตัวแปรว่า MaxD ให้เก็บค่าความแตกต่างสูงสุดระหว่างองค์ประกอบที่อยู่ติดกันที่พบจนถึงตอนนี้ ใช้ค่าเริ่มต้นเป็น Arr[1]-Arr[0].

  • เริ่มการวนซ้ำจากองค์ประกอบที่สองจนถึงดัชนีองค์ประกอบสุดท้ายของอาร์เรย์

  • หากความแตกต่างที่คำนวณได้ระหว่าง Arr[i+1]-Arr[i]>MaxD ให้อัปเดต MaxD

  • ทำต่อไปจนกว่าเราจะไปถึงดัชนีองค์ประกอบสุดท้ายที่สอง

  • พิมพ์ผลลัพธ์ MaxD เป็นความแตกต่างขององค์ประกอบที่อยู่ติดกันสูงสุด

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int max_adj_Diff(int A[],int size){
   int MaxD=A[1]-A[0];
   for(int i=1;i<size-1;i++){
      if(A[i+1]-A[i] > MaxD)
         MaxD=A[i+1]-A[i];
   }
   return MaxD;
}
int main(){
   int Arr[]={1,5,2,18,20,13};
   sort(Arr,6); //this is supposed to sort array in increasing order
   int md=max_adj_Diff(Arr,6);
   cout<<"Maximum adjacent difference in array in its sorted form :"<<md;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Maximum adjacent difference in array in its sorted form: 8