C语言和JavaScript中的默认排序行为对比

前言

今天在js里使用sort时遇见了一个不理解的现象
在这里插入图片描述
在这里插入图片描述
即使用sort默认排序后 9 从排序前的第一位被排到了最后一位.一开始我对js sort的理解和c一样,然后通过查阅后发现并不是这样.

正文

排序是一项常见而重要的操作。不同的编程语言提供了不同的排序函数,它们在默认排序行为上可能存在一些差异。本文将比较C语言和JavaScript中的默认排序行为,突出它们的异同点以及如何正确使用排序函数。

C语言中的排序:qsort函数

在C语言中,排序操作通常使用标准库中的qsort函数来实现。qsort函数允许用户自定义比较函数来指定排序规则。默认情况下,qsort函数使用的是C标准的字典序,即按照字符的ASCII码值进行排序。这意味着如果你直接使用qsort函数来排序整数数组,可能会得到不符合预期的结果。

为了正确排序整数数组,你需要自定义一个比较函数,该函数会比较两个元素的大小并返回相应的比较结果。示例代码如下:

#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = { 5, 2, 8, 1, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);
    
    qsort(arr, n, sizeof(int), compare);
    
    printf("Sorted array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

JavaScript中的排序:sort函数

JavaScript中的数组排序使用sort函数。然而,与C语言不同,JavaScript的sort函数默认将数组元素转换为字符串,然后按照字典序进行排序。这可能导致在排序数字数组时出现意外的结果。为了正确排序数字数组,你需要自定义一个比较函数,该函数会根据数字的大小来决定排序顺序。
感谢大哥的解答:
感谢大哥的解答

结论

虽然C语言和JavaScript都提供了排序函数,但它们的默认排序行为存在差异。C语言的qsort函数默认使用字典序(ASCII码值)进行排序,而JavaScript的sort函数默认将数组元素转换为字符串并按照字典序排序。为了在这两种语言中正确地排序数字数组,最好自定义比较函数,并根据比较结果确定排序顺序。

75dd1b11-07c3-4a88-915c-a7cf953d5667

posted @   冷月半明  阅读(32)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示