You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以下C语言实现的结构体数组排序代码属于哪一种排序算法?

你提供的代码如下:

void sortPR(stuct m *arr, int n_nodes) {
    for (int i = 0; i < n_nodes; i++) {

        // Sort in descending order for weight
        for (int k = i + 1; k < n_nodes; k++) {

            // If weight equal, sort alphabetically
            if (arr[i].weight == arr[k].weight) {

                // Sort alphabetically
                if (strcmp(arr[i].name, arr[k].name) > 0) {
                    swap(&arr[i], &arr[k]);
                }
            } else if (arr[i].weight < arr[k].weight) {
                swap(&arr[i], &arr[k]);
            }
        }
    }
}

排序算法判定结果

这段代码实现的是选择排序(Selection Sort),是适配你自定义多字段排序规则的变体实现。

判定核心依据

  • 整体采用两层嵌套循环结构,外层循环的变量i标记已排序区间的末尾下标,每次迭代确定i位置的最终元素,逐步从前往后构建完整的有序数组。
  • 内层循环遍历i之后所有未排序的元素,直接和i位置的元素做比较:
    • 若i位置元素的weight值更小,就交换两个元素,保证已排序区间始终满足weight降序的要求
    • 若两个元素weight值相等,则比较name字段的字典序,若i位置的name字典序更靠后就交换,保证同weight下name升序的要求
  • 整体时间复杂度为O(n²),比较次数固定为n*(n-1)/2次,完全符合选择排序的典型特征。

内容的提问来源于stack exchange,提问作者JXTN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:03