ในปัญหาในการพิมพ์อาร์เรย์ของสตริงในลำดับที่จัดเรียงโดยไม่ต้องคัดลอกสตริงหนึ่งไปยังอีกสตริง เราจำเป็นต้องจัดเรียงอาร์เรย์ของสตริง ที่นี่โปรแกรมเมอร์ไม่สามารถคัดลอกสตริงไปยังสตริงอื่นขณะเรียงลำดับได้
มาดูตัวอย่างเพื่อทำความเข้าใจแนวคิดกันดีกว่า :
ตัวอย่าง −
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,