加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

十大经典排序算法总结(含Java代码实现)

发布时间:2019-08-28 16:30:18 所属栏目:优化 来源:佚名
导读:最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在桶排序算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲是不可以的

8.1 算法描述

  • 找出待排序的数组中最大和最小的元素;
  • 统计数组中每个值为i的元素出现的次数,存入数组C的第i项;
  • 对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);
  • 反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。

8.2 动图演示

十大经典排序算法最强总结(含JAVA代码实现)

8.3 代码实现

  1. /** 
  2.  * 计数排序 
  3.  * 
  4.  * @param array 
  5.  * @return 
  6.  */ 
  7.  public static int[] CountingSort(int[] array) { 
  8.  if (array.length == 0) return array; 
  9.  int bias, min = array[0], max = array[0]; 
  10.  for (int i = 1; i < array.length; i++) { 
  11.  if (array[i] > max) 
  12.  max = array[i]; 
  13.  if (array[i] < min) 
  14.  min = array[i]; 
  15.  } 
  16.  bias = 0 - min; 
  17.  int[] bucket = new int[max - min + 1]; 
  18.  Arrays.fill(bucket, 0); 
  19.  for (int i = 0; i < array.length; i++) { 
  20.  bucket[array[i] + bias]++; 
  21.  } 
  22.  int index = 0, i = 0; 
  23.  while (index < array.length) { 
  24.  if (bucket[i] != 0) { 
  25.  array[index] = i - bias; 
  26.  bucket[i]--; 
  27.  index++; 
  28.  } else 
  29.  i++; 
  30.  } 
  31.  return array; 
  32.  } 

8.4 算法分析

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!