当前位置: 首页 > news >正文

湛江市建设教育协会学校网站html教程的内容

湛江市建设教育协会学校网站,html教程的内容,手机怎么在微信公众号发文章,com域名多少钱核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序&#…

核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序)。

#include <stdlib.h>
// 获取数组中最大值(用于确定位数)
int getMax(int arr[], int n) {int max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] > max) {max = arr[i];}}return max;
}// 使用计数排序对指定位数进行排序(exp=1,10,100...)
void countSort(int arr[], int n, int exp) {int* output = (int*)malloc(n * sizeof(int));  // 输出数组int count[10] = {0};                          // 十进制计数数组// 统计当前位数字出现次数for (int i = 0; i < n; i++) {count[(arr[i] / exp) % 10]++;}// 计算累计位置(稳定排序关键)for (int i = 1; i < 10; i++) {count[i] += count[i - 1];}// 反向填充保证稳定性(相同数字保持原顺序)for (int i = n - 1; i >= 0; i--) {output[count[(arr[i] / exp) % 10] - 1] = arr[i];count[(arr[i] / exp) % 10]--;}// 将排序结果复制回原数组for (int i = 0; i < n; i++) {arr[i] = output[i];}free(output);
}// 基数排序主函数(LSD:最低位优先)
void radixSort(int arr[], int n) {int max = getMax(arr, n);// 按每一位进行计数排序for (int exp = 1; max / exp > 0; exp *= 10) {countSort(arr, n, exp);}
}
#include <stdio.h>
// 打印数组
void printArray(int arr[], int n) {for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}printf("\n");
}int main() {int arr[] = {170, 45, 75, 90, 802, 24, 2, 66}; // 测试数据int n = sizeof(arr) / sizeof(arr[0]);printf("排序前: ");printArray(arr, n);radixSort(arr, n);printf("排序后: ");printArray(arr, n);return 0;
}

优化建议:

1.基数选择优化,使用更大的基数(如256),减少迭代次数,提升缓存利用率

2.内存预分配,预分配输出数组空间,减少多次内存分配开销

3负数处理,分离符号位单独处理,支持负数排序

扩展优化示例(支持负数)

void radixSortWithNegative(int arr[], int n) {// 分离正负数int* positive = malloc(n * sizeof(int));int* negative = malloc(n * sizeof(int));int pos_count = 0, neg_count = 0;for (int i = 0; i < n; i++) {if (arr[i] >= 0) {positive[pos_count++] = arr[i];} else {negative[neg_count++] = -arr[i]; // 取绝对值处理}}// 分别排序正负数radixSort(positive, pos_count);radixSort(negative, neg_count);// 合并结果(负数逆序)int index = 0;for (int i = neg_count - 1; i >= 0; i--) {arr[index++] = -negative[i];}for (int i = 0; i < pos_count; i++) {arr[index++] = positive[i];}free(positive);free(negative);
}

http://www.yayakq.cn/news/416231/

相关文章:

  • 如何攻克网站网络营销方式对比及分析论文
  • 网站logo优化东莞市非凡网站建设
  • 网站和公众号的区别网站网页的区别与联系
  • 网站建设广告有哪些平台济南学网站建设哪里好
  • 做网站好赚钱怎么做班级网站
  • 如何建立一个私人网站哪有网站建设的
  • 可以做设计私单的网站游戏设计 网站
  • 织梦cms sql注入破解网站后台管理员账号密码wordpress页面更好看
  • 广东的网站建设做网站公司哪家强
  • 做钢管的去什么网站发信息wordpress微信验证码
  • 大作设计网站公司大宗商品交易软件哪个好
  • php简单购物网站源码网页后台设计师工资一般多少
  • 有那个网站可以做免费的投票wordpress wp super cache
  • 小学生做网站步骤快速装修公司
  • html5导航网站查网站服务器地址
  • 网站开发学习案例谷歌推广费用多少
  • 做电商网站哪里好适合女生的计算机专业有哪些
  • 建电商网站中国最大的网站建设公司
  • 如何做网站需求wordpress时间格式
  • 网上停车场做施工图人员网站做配色的网站
  • 公司做网站需要多少钱沈阳百度首页优化
  • 做最简单的网站手机之家报价大全
  • 义乌网站建设公司哪家好中装建设
  • 商城网站建设建议seo公司重庆
  • 重庆网站建设快速建站wordpress tag 转拼音
  • 网站春节放假邯郸成安建设局网站
  • html5 网站模板把插钉机子拍下怎么做网站
  • 怎么做挣钱的网站网络营销软件
  • 北京中小型网站建设内容营销和传统营销的区别
  • 申请建设部门网站的报告做音乐网站的选题背景