ในปัญหานี้ เราได้รับอาร์เรย์ของสตริง งานของเราคือสร้างโปรแกรม c เพื่อเรียงลำดับอาร์เรย์ของชื่อหรือสตริง โปรแกรมนี้จะจัดเรียงชื่อทั้งหมดที่เราป้อนในการป้อนข้อมูลตามลำดับตัวอักษรจากน้อยไปมาก
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
namesArray = ["Rishabh", "Jyoti", "Palak", "Akash"]
ผลลัพธ์
["Akash", "jyoti", "palak", "Rishabh"]
เพื่อแก้ปัญหานี้ เราจะใช้ฟังก์ชัน qsort() ของไลบรารีเทมเพลตมาตรฐาน เนื่องจากเราทราบดีว่าการจัดเรียงค่าจำนวนเต็ม สิ่งที่เปลี่ยนแปลงในที่นี้คือ เรากำลังพิจารณาสตริงสำหรับการเปรียบเทียบแทนที่จะเป็นค่าจำนวนเต็ม
ดังนั้น ตัวเปรียบเทียบที่ใช้ใน qsort() จะมีการเปลี่ยนแปลง และ strcmp() จะถูกใช้เพื่อเปรียบเทียบสตริงในตัวเปรียบเทียบ เมื่อใช้สิ่งนี้ เราสามารถจัดเรียงอาร์เรย์ของชื่อหรือสตริงได้
โปรแกรม C เพื่อจัดเรียงอาร์เรย์ของชื่อหรือสตริง
ตัวอย่าง
#include <stdio.h> #include <stdlib.h> #include <string.h> static int comparator(const void* str1, const void* str2) { if(strcmp(*(const char**)str1, *(const char**)str2) >= 0) return 1; else return 0; } int main() { const char* arr[] = {"Rishabh", "Jyoti", "Palak", "Akash"}; int n = sizeof(arr) / sizeof(arr[0]); printf("\nGiven array of names: \t"); for (int i = 0; i < n; i++) printf("%s \t", arr[i]); qsort(arr, n, sizeof(const char*), comparator); printf("\nSorted array of names: \t"); for (int i = 0; i < n; i++) printf("%s \t", arr[i]); return 0; }
ผลลัพธ์
Given array of names: Rishabh Jyoti Palak Akash Sorted array of names: Akash Jyoti Palak Rishabh