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

พิมพ์อาร์เรย์ของสตริงตามลำดับการจัดเรียงโดยไม่ต้องคัดลอกสตริงหนึ่งไปยังอีกสตริงใน C++


ในปัญหาในการพิมพ์อาร์เรย์ของสตริงในลำดับที่จัดเรียงโดยไม่ต้องคัดลอกสตริงหนึ่งไปยังอีกสตริง เราจำเป็นต้องจัดเรียงอาร์เรย์ของสตริง ที่นี่โปรแกรมเมอร์ไม่สามารถคัดลอกสตริงไปยังสตริงอื่นขณะเรียงลำดับได้

มาดูตัวอย่างเพื่อทำความเข้าใจแนวคิดกันดีกว่า :

ตัวอย่าง

Input : {“Delhi”, “Hyderabad”, “Indore”, “Mumbai”, “Banglore”}
Output : Banglore, Delhi, Hyderabad, Indore, Mumbai

คำอธิบาย − Lexicographically การสั่งซื้อเสร็จสิ้น ดังนั้นบังกาลอร์ที่เริ่มต้นด้วย B มาก่อนและมุมไบที่เริ่มต้นด้วย M จะอยู่ท้ายสุด

ตอนนี้ มาลองหาวิธีแก้ปัญหาของเรากัน

ในการแก้ปัญหานี้ เราสามารถสร้างอาร์เรย์ที่เก็บดัชนีที่ถูกต้องของสตริงเหล่านี้ได้ เนื่องจากจำเป็นต้องดำเนินการเปลี่ยนตำแหน่งของสตริงจริงๆ นี่เป็นวิธีหนึ่งในการแก้ปัญหา

เราจะใช้อาร์เรย์ดัชนีและใช้เทคนิคการเรียงลำดับเพื่อจัดเรียงแล้วพิมพ์ เราจะใช้เทคนิคการเรียงลำดับการเลือกที่ใช้การเปรียบเทียบโดยตรง

ตัวอย่าง

ตอนนี้เรามาสร้างโปรแกรมเพื่อแสดงการทำงาน -

#include <iostream>
using namespace std;
void sortedStringArray(string arr[], int n){
   int stringIndex[n];
   int i, j, min;
   for (i=0; i<n; i++)
   stringIndex[i] = i;
   for (i=0; i<n-1; i++){
      min = i;
      for (j=i+1; j<n; j++){
         if (arr[stringIndex[min]].compare(arr[stringIndex[j]]) > 0)
            min = j;
      }
      if (min != i){
         int temp = stringIndex[min];
         stringIndex[min] = stringIndex[i];
         stringIndex[i] = temp;
      }
   }
   for (i=0; i<n; i++)
      cout << arr[stringIndex[i]] << ", ";
}
int main(){
   string arr[] = {"Delhi", "Hyderabad", "Indore", "Mumbai", "Banglore"};
   int n = 5;
   sortedStringArray(arr, n);
   return 0;
}

ผลลัพธ์

Banglore, Delhi, Hyderabad, Indore, Mumbai,