Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เรียงลำดับอาร์เรย์ของชื่อหรือสตริง

ในปัญหานี้ เราได้รับอาร์เรย์ของสตริง งานคือสร้างโปรแกรม C เพื่อเรียงลำดับอาร์เรย์ของชื่อหรือสตริง โปรแกรมนี้จะเรียงชื่อทั้งหมดที่เราให้ในอินพุตตามลำดับอักษรจากน้อยไปมาก (ascending)

ตัวอย่างเพื่อเข้าใจปัญหา

อินพุต

namesArray = ["Rishabh", "Jyoti", "Palak", "Akash"]

เอาต์พุต

["Akash", "Jyoti", "Palak", "Rishabh"]

เพื่อแก้ปัญหานี้ เราจะใช้ฟังก์ชัน qsort() ของไลบรารีมาตรฐาน เนื่องจากเรารู้จักการเรียงค่าจำนวนเต็ม สิ่งที่เปลี่ยนแปลงคือเราพิจารณาสตริงสำหรับการเปรียบเทียบแทนค่าจำนวนเต็ม

ดังนั้น ตัวเปรียบเทียบ (comparator) ที่ใช้ใน qsort() จะเปลี่ยน และจะใช้ strcmp() เพื่อเปรียบเทียบสตริงใน comparator ด้วยวิธีนี้เราสามารถเรียงอาร์เรย์ของชื่อหรือสตริงได้

โปรแกรม 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("\nอาร์เรย์ชื่อที่กำหนด: \t");
    for (int i = 0; i < n; i++) printf("%s \t", arr[i]);
    qsort(arr, n, sizeof(const char*), comparator);
    printf("\nอาร์เรย์ชื่อที่เรียงแล้ว: \t");
    for (int i = 0; i < n; i++)
        printf("%s \t", arr[i]);
    return 0;
}

ผลลัพธ์

อาร์เรย์ชื่อที่กำหนด: Rishabh Jyoti Palak Akash
อาร์เรย์ชื่อที่เรียงแล้ว: Akash Jyoti Palak Rishabh