ในปัญหานี้ เราได้รับอาร์เรย์ของสตริง งานของเราคือสร้างโปรแกรม 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