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

中国建设银行网站首页u盾登入工商注册网上核名

中国建设银行网站首页u盾登入,工商注册网上核名,网站关键词排名全掉了,国外做多媒体展览的网站大家好#xff0c;我是烤鸭#xff1a; 今天分享一下基础排序算法之基数排序。 1. 基数排序#xff1a; 原理#xff1a;基数排序#xff08;radix sort#xff09;属于“分配式排序”#xff08;distribution sort#xff09;#xff0c;又称“桶子法”#…大家好我是烤鸭     今天分享一下基础排序算法之基数排序。 1.    基数排序 原理基数排序radix sort属于“分配式排序”distribution sort又称“桶子法”bucket sort或bin sort。 将所有待比较数值正整数统一为同样的数位长度数位较短的数前面补零。然后从最低位开始依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 思路 基数排序即一个数位一个数位地进行排序平常生活中我们经常使用的一种算法思想如要对一个日期进行排序日期中由年、月、日组成的对于这个问题我们经常使用的是先比较年份如果相同再比较月份如果还相同就比较日。 下面四个数进行排序123、312、245、531 个位   十位   百位 531      312      123 312      123      245 123      531      312 245      245      531 代码实现 /*** 基数排序* param d* param array* 时间复杂度 O的log2 N* 基数排序 运用二维数组来分别比较每一位个位、十位、百位…* 输入10个整数的数组*/private void radixSort(int d,int[] array){long nowTime System.nanoTime();int n1;//代表位数对应的数1,10,100000...int k0;//保存每一位排序后的结果用于下一位的排序输入int[][] bucketnew int[10][array.length];//排序桶用于保存每次排序后的结果这一位上排序结果相同的数字放在同一个桶里int[] numnew int[array.length];//用于保存每个桶里有多少个数字 ,最多为输入数组长度while(nd){for(int e:array) //将数组array里的每个数字放在相应的桶里{int digit(e/n)%10;bucket[digit][num[digit]]e;num[digit];}for(int i0;iarray.length;i)//将前一个循环生成的桶里的数据覆盖到原数组中用于保存这一位的排序结果{if(num[i]!0)//这个桶里有数据从上到下遍历这个桶并将数据保存到原数组中{for(int j0;jnum[i];j){array[k]bucket[i][j];k;}}num[i]0;//将桶里计数器置0用于下一次位排序}n*10;k0;//将k置0用于下一轮保存位排序结果}System.out.println(基数排序花费时间(ms): ((System.nanoTime() - nowTime) / 1000000.0) ms);} 基数排序是稳定算法效率很高其复杂度为O(nlog(r)m)其中r为所采取的基数而m为堆数。但它只能用在整数的排序中且需要借助一定的辅助空间。 上面的代码适用有些局限在于对基数值选取 int [] x {25 ,11 ,22 ,34 ,15 ,44 ,76, 66, 100, 8 ,14, 20 ,2, 5 ,1 }; 比如这个数组基数应该选3。附上一个选择基数值的方法。 /*** 获取基数排序中的基数* param array* return*/public int getRadixBasicNumber(int[] array){if(array null array.length 0) {return 0;}int max 0;//1获取最大的绝对值的数for(int i 0;iarray.length;i) {if(Math.abs(max)Math.abs(array[i])) {max array[i];}}int times 0;if(max0) max -max;//2求出最大的绝对值的数是10的times次幂。while(max 0) {max max/10;times ;}return times;} 耗时对比 10W 条随机 数据 运行如图 分别对比了基数排序直插排序希尔排序和快速排序。差距很明显。 50W 条随机 数据 运行如图 分别对比了基数排序直插排序希尔排序和快速排序。差距很明显。 100W 条随机 数据 运行如图 分别对比了基数排序直插排序希尔排序和快速排序。差距很明显。 总结 基数排序 优点效率高。 缺点占用内存大只能对正整数排序采用二维数组做桶时 最坏时间复杂度O(P(NB))。 平均时间复杂度为O(P(NB))。 其中P是排序的趟数N是要被排序元素的个数B是桶数。 各种排序方法比较 更多排序算法 冒泡排序     https://blog.csdn.net/Angry_Mills/article/details/81057900 插入排序     https://blog.csdn.net/Angry_Mills/article/details/81208700 快速排序     https://blog.csdn.net/Angry_Mills/article/details/83339390
http://www.yutouwan.com/news/66123/

相关文章:

  • 建设网站的能力东莞网站建设运营
  • 塑胶科技东莞网站建设wordpress 图片显示慢
  • 网站建设与管理案例教程教学大纲网站建设登录注册怎么做
  • 设计师培训 网站国内网站免备案
  • 绵阳网站建设100jvwordpress主题免费中文版
  • 眉山做网站襄阳住房和城乡建设网站
  • 泰州做网站哪家好悬赏做海报的网站
  • 网站建设实习收获手机网站网址申请
  • 网站建设一般分为几个步骤设计网站猪八戒
  • 怎么做免流网站如何设计一个简单网页
  • 货源网站不愁销路的小型加工厂项目年入百万
  • 重庆seo和网络推广宁波seo整体优化公司
  • 求个网站谢谢wordpress帮助中心模板
  • 织梦网站 伪静态手机商城网站制作
  • 腾讯建设网站视频视频视频godaddy服务器做网站
  • linux网站如何做ip解析深圳网络推广网站推广
  • 民治网站设计圳网站建设公司精准客源app
  • 建站模板招募设计师广州网站建设公司哪家服务好
  • 合肥网站制作公司开鲁网站seo免费版
  • 不知此网站枉做男人的网站合肥公共资源交易中心
  • 台州网站建设公司威海外贸建站
  • c 转网站开发wordpress login 图标
  • 关于集团网站建设请示360地图下载最新版
  • 网站做镜像是什么泰安钢管网站建设
  • 网站开发毕业设计说明花钱也可以哪些网站可以做推广广告
  • 深圳做网站收费品牌网站建设荐选蝌蚪
  • 网站开发工具最适合网站建设制作介绍河南
  • 自助建站系统网站建设系统网站建设网站建设wordpress主题列表封面
  • 百度推广智能网站wordpress码农主题
  • 手机网站设计与规划郑州seo优化外包顾问