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

国际大型门户网站/外贸定制网站建设电话

国际大型门户网站,外贸定制网站建设电话,东莞网站建设aj,wordpress可以做网店吗一,基数排序 基本思想: 按最低位优先法先对低位关键字进行排序,直到对最高位关键字排序为止,经过若干次分配和收集来实现排序 基数排序中用到了箱排序,每个箱子都是先进先出,因此采用队列是最合理的数据结构…

一,基数排序

基本思想:

 

按最低位优先法先对低位关键字进行排序,直到对最高位关键字排序为止,经过若干次分配和收集来实现排序

基数排序中用到了箱排序,每个箱子都是先进先出,因此采用队列是最合理的数据结构。如下图:

 

 

开始采用顺序表的存储结构,每次分派10个Length长的队列,写了很多代码,运行却发现速度很慢,不符合基数排序的理论时间复杂度O(k*n),而且消耗内存也很多(10*n).找了原因可能是自己写的队列影响了速度,因此采用了以数组做存储结构,只分配n的长度,设一个计数标志数组记录存储位置。

 

 

二,随机数产生

 

首先调用srand((int)time(NULL))函数,设定随机数种子。返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每次执行代码都可以产生不同的随机数。

函数rand()可以生成0—RAND_MAX()之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。测试系统值RAND_MAX为32767,可以编写自己的库函数更改,由于本系统重在序列个数多少,和整数大小范围关系不大,因此没有在系统中实现。

本系统编写了一个随机产生low和high之间的整数:int RandomInteger(int low,int high)

其中产生low和high之间的函数语句:k=(long)(rand()%(high-low+1)+low);

 

三,时间函数

        clock_t start, finish; 

double duration; 

 

  start = clock();
radixsort(L,10000);
finish = clock(); 
duration = (double)(finish - start) / CLOCKS_PER_SEC;  

——————————————代码分界线———————————————————————————

 

 

 

#include<stdio.h>
#include<malloc.h>
#include <stdlib.h>
#include<time.h>
//辅助函数,求数据的最大位数
int maxbit(int L[],int n)  { int d = 1,i=0; //保存最大的位数int p=10;for(i = 0;i < n; i++) {while(L[i] >= p) {p *= 10;d++;}}return d;
}
//基数排序
void radixsort(int L[],int len)  { int d = maxbit(L,len); long * tmp  = (long *)malloc(len*sizeof(long));long * count  = (long *)malloc(10*sizeof(long));; //计数器,10个桶 long i,j,k;int radix = 1;for(i = 1; i <= d; i++) {  //进行d次排序    for(j = 0; j < 10;j++) //每次分配前清空计数器count[j] = 0; for(j = 0;j < len; j++) { //统计每个桶中的记录数k = (L[j]/radix)%10; count[k]++;}for(j = 1;j < 10; j++) //将tmp中的位置依次分配给每个桶 count[j] = count[j-1] + count[j];for(j = len-1;j >= 0;j--) { //将所有桶中记录依次收集到tmp中k = (L[j]/radix)%10;count[k]--;tmp[count[k]] = L[j];}for(j = 0;j < len;j++) //将临时数组的内容复制到L中L[j] = tmp[j];radix = radix*10;} free(tmp);free(count);
} 
int RandomInteger(long low,long high)
{long k;k=(long)(rand()%(high-low+1)+low);return k; 
} 
int main()
{long i=0;long * L  = (long *)malloc(10000*sizeof(long));clock_t start, finish; double duration; srand( (long)time( NULL ) ); for(i=0;i<10000;i++){L[i]=i;//RandomInteger(0,10000);}start = clock();radixsort(L,10000);finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC;  for(i=0;i<10000;i++){printf("%7.2ld   ",L[i]);}printf("%5.4lfs  ",duration);getchar();getchar();getchar();return 0;
}

 

 

 

 

 

转载于:https://www.cnblogs.com/louffy/archive/2011/10/05/9496726.html

http://www.lbrq.cn/news/1405117.html

相关文章:

  • 网站开发工作程序怎么写/国外网站推广公司
  • 广州荔湾做网站公司/百度搜索关键词规则
  • 用自己的电脑做网站需要备案吗/百度一下百度官网
  • 手机自助建站永久免费/百度搜首页
  • 怎么下载字体到wordpress/seo 优化 工具
  • 网站没有域名设置/企业品牌营销推广
  • 网站建设适合手机/关于搜索引擎的搜索技巧
  • 做图片详情网站/杭州百家号优化
  • 怎样自己做网站/廊坊百度推广seo
  • 可以加外链的网站/整合营销传播案例分析
  • 哪个网站是教人做淘宝客的/宝鸡seo外包公司
  • 网站营销推广怎么做网络营销推广/重庆seo论坛
  • 全国企业营业执照查询/网络营销乐云seo
  • 男女做污视频在线观看网站/saas建站
  • 唐山做网站公司哪家好/上海平台推广的公司
  • java做商城网站可以吗/网站测速工具
  • 一个网站做几个关键词/网站优化推广费用
  • 怎么利用招聘网站做薪酬调查/cba排名最新排名
  • 怎么做公司网站竞价/网络推广代理怎么做
  • joomla做类似赶集网的网站/网站注册步骤
  • 做网站1天转多钱/广州百度搜索优化
  • 织梦珠宝网站模板/软文营销步骤
  • 网站翻译建设/什么是百度竞价排名
  • 手机如何免费做网站/深圳优化服务
  • asp access 手机站 用于做微网站/竞价外包托管费用
  • 网页设计的基本元素/seo关键字优化教程
  • 做印刷的有什么网站/网络维护培训班
  • 建设银行官方网站下载/seo营销外包
  • 网页设计行业/seo是什么意思啊
  • 公司网站的seo怎么做/株洲百度seo
  • HarmonyOS 实战:学会在鸿蒙中使用第三方 JavaScript 库(附完整 Demo)
  • 如何用给各种IDE配置R语言环境
  • AI Deep Research 思维链简介
  • 【Java基础常见辨析】重载与重写,深拷贝与浅拷贝,抽象类与普通类
  • 静配中心配药智能化:基于高并发架构的Go语言实现
  • 说一下事件委托