计数排序

news/发布时间2024/5/19 19:40:55
/********************************************************************************************************
*
*	file name:	Zqh_计数排序.c
* 	author	 :	keyword2024@163.com
* 	date	 :	2024/05/05
* 	function   :    计数排序.改
*	note	:    算法
*	
*  Copyright (c)  2023-2024   keyword2024@163.com    All right Reserved
* ******************************************************************************************************/#include<stdio.h>
/*
第一种形式实现计数排序
计数排序后的顺序为从小到大
arr[0...len-1]为待排数组,每个元素均是0-k中的一个值
brr[0...len-1]为排序后的输出数组
crr[0...k]保存0...k中每个值在数组arr中出现的次数
*/
void Count_Sort(int *arr,int *brr,int *crr,int len,int k)
{int i,j=0;//数组crr各元素置0for(i=0;i<=k;i++)crr[i] = 0;//统计数组arr中每个元素重复出现的个数for(i=0;i<len;i++)crr[arr[i]]++;//求数组arr中小于等于i的元素个数for(i=1;i<=k;i++)crr[i] += crr[i-1];//把arr中的元素放在brr中对应的位置上for(i=len-1;i>=0;i--){brr[crr[arr[i]]-1] = arr[i];//如果有相同的元素,则放在下一个位置上crr[arr[i]]--;}
}/*
第二种形式实现计数排序
计数排序后的顺序为从小到大
arr[0...len-1]为待排数组,每个元素均是0-k中的一个值
crr[0...k]保存0...k中每个值在数组arr中出现的次数
*/
void Count_Sort(int *arr,int *crr,int len,int k)
{int i,j=0;//数组crr各元素置0for(i=0;i<=k;i++)crr[i] = 0;//统计数组arr中每个元素重复出现的个数for(i=0;i<len;i++)crr[arr[i]]++;//根据crr[i]的大小,将元素i放入arr适当的位置for(i=0;i<=k;i++)while((crr[i]--)>0){arr[j++] = i;}
}int main()
{int i; //待排序数组,每个元素均在0-8之间int arr[] = {2,1,3,8,6,0};int brr[6];int crr[9];Count_Sort(arr,brr,crr,6,8);printf("计数排序后的结果为:");for(i=0;i<6;i++)printf("%d ",brr[i]);printf("\n");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/76374838.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

沟通技巧

第一步:搞定情绪 充分表达尊重,(不吝赞美,如何夸奖别人?从细节和对比可以发现) 夸人的时候不要太笼统,如:你穿的真好看和今天 上衣显的你很白,太美了。。 显然后面这一句显得更加的真诚 找不到细节就用对比,你穿的真好看,比一般人有气质多了。 对比找不到,就直接夸…

如何根据二叉树遍历结果快速绘制二叉树

一、已知前序遍历和中序遍历 (1)前序遍历(根结点--->左子树--->右子树) A B D G H C E I F (2)中序遍历(左子树--->根结点--->右子树) G D H B A E I C F注意:在最后连接二叉树时,注意先完玩左子树,再连右子树 二、已知前后序遍历和中序遍…

ctf_web

ctfshow web13 访问题目链接一看是一道文件上传题,上传文件进行测试 上传php会显示 error suffix 因此推测会检测格式 当文件字数超出一定字数时,显示 error file zise 常规操作就是访问 .php.bak 、.phps 、.swp等文件,看看有没有源码泄露 这道题访问 upload.php.bak 成功获…

02_Modbus的功能码与报文详解

Modbus协议类型 Modbus从站四张表类型 主站常用功能码 Modbus TCP请求报文,功能码03Modbus TCP应答报文,功能码03 00 17为23个字节:请求长度加应答长度06+17=23; 14为20长度:14+06=20Modbus UDP请求报文,功能码03Modbus UDP应答报文,功能码03 Modbus RTU请求报文,功能…

https加密机制

参考:https://www.cnblogs.com/sxiszero/p/11133747.html 对称加密:只用一个秘钥的加解密,如果秘钥进行了泄漏,导致数据不安全 非对称加密:非对称加密算法需要一组密钥对,分别是公钥和私钥,这两个密钥是成对出现的。公钥加密的内容需要对应的私钥解密,私钥加密的内容需…

Docker-DevOps-入门手册(全)

Docker DevOps 入门手册(全)原文:zh.annas-archive.org/md5/A074DB026A63DFD63D361454222593A5 译者:飞龙 协议:CC BY-NC-SA 4.0前言 Docker 与 DevOps 概述了容器化的强大力量以及这种创新对开发团队和一般运营的影响。我们还将了解 DevOps 的真正含义,涉及的原则,以及…