算法导论 线性时间排序 决策树模型 计数排序

比较排序;堆排序,归并排序,快速排序,插入排序等,都是元素间的相互比较,得到有序数列(这几种排序的源码可以看我之前的博客)
线性时间排序;说线性时间时间排序,我们的大脑可能已经猜想出该类排序的时间复杂度是O(n),所以叫做线性时间排序,不错!你的大脑满满的都是逻辑。(此句转载于liao_hb)(仅对n个数进行出现次数的记录,其他是常量,本题的列子是O(3*n+k)  ->  转换   O(n));
决策树模型;验证比较排序的逻辑
元素个数3(n),结果(矩形)有6个,3!=6;
故决策树的叶节点数量是输入条件个数的阶乘,其中的一个叶节点是我们想要的结果,它的最长高度就是该算法的最坏的状态求高度h
n!<=2^h 
h>=log 2 n!
斯特林公式
h>=log 2 (n/e)^n=n*log 2 n/e=n*log 2 n-n*log 2e=省略低阶和常量=n*log 2 n=n*lg n ;
因此比较排序的时间在O(n*lg n)左右,排序时间与他相近的基本是优秀的比较排序算法。不考虑常数因子(低阶常量)
写到这里,计算排序走起;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 1000
#define K 100
void happen_rand(int* p, int n);
void count_sort(int* p, int n);
int main()
{
    int array[N];
    happen_rand(array, N);
    count_sort(array, N);
    for (int i = 0; i < N; i++) {
        printf("%d\n", array[i]);
    }




    return 0;
}
void happen_rand(int* p, int n)
{
    srand();
    for (int i = 0; i < N; i++) {
        p[i] = rand() % K;

    }
}

void count_sort(int* p, int n)
{
    int tmp[N], count[K];
    for (int i = 0; i < K; i++) {//count数组初始化0,记录每个原始出现的次数,初始是0;
        count[i] = 0;
    }
    for (int i = 0; i < N; i++) {//当某个元素出现后,计数+1
        count[p[i]] ++;
    }
    for (int i = 1; i <K; i++) {//count记录每个元素所在位置
        count[i] = count[i] + count[i - 1];
    }
    for (int i = 0; i < N; i++) {
        tmp[count[p[i]]-1] = p[i];//这里要-1,因为,比如该元素在第八个位置,它就放到下标是七的位置
        count[p[i]]--;位置计数-1
    }
    for (int i = 0; i < N; i++) {
        p[i] = tmp[i];//复制带原数组
    }
}



全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务