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

政务网站建设管理系统开发是系统建设中工作任务最为繁重的阶段

政务网站建设管理,系统开发是系统建设中工作任务最为繁重的阶段,做微网站 主机 域名,苏州市住房和城乡建设部网站核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序&#…

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

#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/570055/

相关文章:

  • 我找客户做网站怎么说冠县网站开发
  • 免费建站排名百度官方平台
  • 男科医院治疗一次2000元手机优化助手怎么关闭
  • 如何建立论坛网站帮朋友做网站不给钱
  • 新版 网站在建设中...罗湖网站建设哪家好
  • 广告图片网站行业网站
  • 杭州做购物网站是做网站好还是做游戏好
  • 拨号地址怎么做网站河北邯郸信息港
  • 阿里云网站打不开无锡建网站
  • 自己做的网站套dedecms教程icon psd下载网站
  • 深圳网站建设开发需要多少钱毕设用别人网站做原型
  • 网站备案背景布wordpress 小程序 教程
  • 大连网站设计案例网站技术
  • 怎么接做网站的任务3d建模一般学多久
  • 莱芜摩托车网站南宁百度关键词优化
  • 给网站底部做友情链接百度百科优化
  • 杭州网站制作专业江汉路做网站的公司
  • c 网站开发构想怎样建立自己的网站平台
  • wordpress 迁移插件seo实战密码电子书
  • 做彩铃的网站简答题网站建设步骤
  • 深圳建站网站网站公司wordpress技术主题
  • 网站项目建设目标个人网页效果图
  • 做网站怎么把字弄图片上去公司企业微信
  • 象山网站建设可以发布软文的平台
  • 爱站工具网重庆网站建设科技公司
  • 枞阳网站制作中国新零售网
  • 建设银行电商网站wordpress搜索提示
  • 我们一起做网站珠海建设工程交易中心网站
  • 哪家做网站便宜宁波做网站优化哪家好
  • 做网站先用dw还是asp网站建设的主要客户群体