认知算法(四)

简介: 认知算法(四),一起来学习吧。

嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲认识算法,请一起学习吧。

一、基数排序

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。

  1. 基数排序 vs 计数排序 vs 桶排序

基数排序有两种方法:

这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:

基数排序:根据键值的每位数字来分配桶;
计数排序:每个桶只存储单一键值;
桶排序:每个桶存储一定范围的数值;

二、代码实现

include<stdio.h>

define MAX 20

//#define SHOWPASS

define BASE 10

void print(int *a, int n) {
int i;
for (i = 0; i < n; i++) {

printf("%d\t", a[i]);

}
}

void radixsort(int *a, int n) {
int i, b[MAX], m = a[0], exp = 1;

for (i = 1; i < n; i++) {

if (a[i] > m) {
  m = a[i];
}

}

while (m / exp > 0) {

int bucket[BASE] = { 0 };

for (i = 0; i < n; i++) {
  bucket[(a[i] / exp) % BASE]++;
}

for (i = 1; i < BASE; i++) {
  bucket[i] += bucket[i - 1];
}

for (i = n - 1; i >= 0; i--) {
  b[--bucket[(a[i] / exp) % BASE]] = a[i];
}

for (i = 0; i < n; i++) {
  a[i] = b[i];
}

exp *= BASE;

ifdef SHOWPASS

printf("\nPASS   : ");
print(a, n);

endif

}
}

int main() {
int arr[MAX];
int i, n;

printf("Enter total elements (n <= %d) : ", MAX);
scanf("%d", &n);
n = n < MAX ? n : MAX;

printf("Enter %d Elements : ", n);
for (i = 0; i < n; i++) {

scanf("%d", &arr[i]);

}

printf("\nARRAY : ");
print(&arr[0], n);

radixsort(&arr[0], n);

printf("\nSORTED : ");
print(&arr[0], n);
printf("\n");

return 0;
}

相关文章
|
存储 Linux Go
基于MinIO搭建高性能文件服务器
基于MinIO搭建高性能文件服务器
1471 0
基于MinIO搭建高性能文件服务器
|
8月前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
5619 119
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
java生成word(使用Poi-tl)
java生成word(使用Poi-tl)
899 0
|
搜索推荐 数据挖掘 UED
流量渠道分析
流量渠道分析
479 0
|
存储 测试技术 索引
「译文」Loki 简明指南:如何处理失序和较旧的日志
「译文」Loki 简明指南:如何处理失序和较旧的日志
|
Rust 算法 编译器
用Numba:一行代码将Python程序运行速度提升100倍
Numba是一款可以将python函数编译为机器代码的JIT编译器,由Anaconda公司主导开发,可以对Python原生代码进行CPU和GPU加速。Numba非常擅长加速数值运算,他对Numpy支持得非常好,Numpy经过Numba加速后的速度接近C和Fortran。
1358 0
用Numba:一行代码将Python程序运行速度提升100倍
|
数据处理 语音技术
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
(保姆教程及高级玩法-自定义数据处理)微信同声传译插件-语音识别
196 0
|
安全 Java 数据库
springboot整合springsecurity以及mybatis-plus详解
springboot整合springsecurity以及mybatis-plus详解
1299 0
|
存储 数据库 C语言
SAP ABAP——数据类型(一)【数据类型概要及分类】
本文主要介绍一下SAP ABAP中关于数据类型的概要以及分类,其中数据类型包括预定义的数据类型,数据字典数据类型,用户自定义数据类型,下面将依次对其进行讲解
2674 0
SAP ABAP——数据类型(一)【数据类型概要及分类】