使用键值对进行 qsort

发布于 2024-12-11 23:50:04 字数 83 浏览 1 评论 0原文

我正在使用 C 库函数 qsort 对一堆整数键进行排序。关于如何扩展它以对键值对进行排序(其中整数键可以具有任何关联值)的任何想法、建议和指示?谢谢!

I am using the C library function qsort to sort a bunch of integer keys. Any ideas, suggestions, pointers on how I can extend it to sort key-value pairs, where the integer keys can have any associated value? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

緦唸λ蓇 2024-12-18 23:50:04

使用(固定大小)结构数组,并提供您自己的比较函数。

Use an array of (fixed sized) structs, and supply your own comparison functions.

多情癖 2024-12-18 23:50:04

使用 struct { int key;无效*值; } 和一个进行比较的函数?

Use struct { int key; void *value; } and a function that does the comparison?

北斗星光 2024-12-18 23:50:04
//just quick sorting function (with key-index array to maintain identity)
//inefficient but works
void quicksort(int *values, int *keys, int count)
{
    bool bool_sorted = false;
    int temp;

    //check whether all keys are in the correct order
    while (bool_sorted == false)
    {
        bool_sorted = true;

        for (int i = 0; i < count-1; i++)
        {
            //if next value is lower
            if (values[i] > values[i+1])
            {
                //swap + key index
                temp = values[i];
                values[i] = values[i+1];
                values[i+1] = temp;

                temp = keys[i];
                keys[i] = keys[i+1];
                keys[i+1] = temp;

                bool_sorted = false;
            }
        }
    }
}

发布是为了方便其他寻求实际答案的人。

//just quick sorting function (with key-index array to maintain identity)
//inefficient but works
void quicksort(int *values, int *keys, int count)
{
    bool bool_sorted = false;
    int temp;

    //check whether all keys are in the correct order
    while (bool_sorted == false)
    {
        bool_sorted = true;

        for (int i = 0; i < count-1; i++)
        {
            //if next value is lower
            if (values[i] > values[i+1])
            {
                //swap + key index
                temp = values[i];
                values[i] = values[i+1];
                values[i+1] = temp;

                temp = keys[i];
                keys[i] = keys[i+1];
                keys[i+1] = temp;

                bool_sorted = false;
            }
        }
    }
}

Posted for convenience of anyone else looking for an actual answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文