1. public static void radixsort(int[] a){
  2. int max=a[0];
  3. for(int i=1;i<a.length;i++){
  4. if (max<a[i]) {
  5. max=a[i];
  6. }
  7. }
  8. int time=0;
  9. while(max>0){
  10. max/=10;
  11. time++;
  12. }
  13. java.util.List<ArrayList> queue=new ArrayList<ArrayList>();
  14. for(int i=0;i<10;i++){
  15. ArrayList<Integer> queue1=new ArrayList<>();
  16. queue.add(queue1);
  17. }
  18. for(int i=0;i<time;i++){
  19. for(int j=0;j<a.length;j++){
  20. int x=a[j]%(int)Math.pow(10, i+1)/(int)Math.pow(10, i);
  21. queue.get(x).add(a[j]);
  22. }
  23. int tmp=0;
  24. for(int j=0;j<10;j++){
  25. while(!queue.get(j).isEmpty()){
  26. a[tmp++]=(int)queue.get(j).remove(0);
  27. }
  28. }
  29. }
  30.  
  31. for (int i = 0; i < a.length; i++) {
  32. System.out.println("radixsort" + a[i]);
  33. }
  34. }
  35.  
  36. public static void mergesort(int[] a) {
  37. sort(a, 0, a.length-1);
  38. for (int i = 0; i < a.length; i++) {
  39. System.out.println("mergesort" + a[i]);
  40. }
  41. }
  42.  
  43. public static void merging(int[] a, int left, int middle, int right) {
  44. if (middle < left || middle > right) {
  45. return;
  46. }
  47. int[] tmpArray = new int[a.length];
  48. int tmp = left;
  49. int tmpIndex = left;
  50. int begin1 = left;
  51. int begin2 = middle+1;
  52. while (begin1 <= middle && begin2 <= right) {
  53. if (a[begin1] < a[begin2]) {
  54. tmpArray[tmp++] = a[begin1++];
  55. } else {
  56. tmpArray[tmp++] = a[begin2++];
  57. }
  58. }
  59. while (begin1 <= middle) {
  60. tmpArray[tmp++] = a[begin1++];
  61. }
  62. while (begin2 <= right) {
  63. tmpArray[tmp++] = a[begin2++];
  64. }
  65. while(tmpIndex<=right){
  66. a[tmpIndex]=tmpArray[tmpIndex++];
  67. }
  68. }
  69.  
  70. public static void sort(int[] a, int left, int right) {
  71. if (left < right) {
  72. int middle = (right - left) / 2 + left;
  73. sort(a, left, middle);
  74. sort(a, middle + 1, right);
  75. merging(a, left, middle, right);
  76. }
  77. }
  78.  
  79. public static void quicksort(int[] a) {
  80. System.out.println("quicksort");
  81. quick(a, 0, a.length - 1);
  82. for (int i = 0; i < a.length; i++) {
  83. System.out.println("quicksort" + a[i]);
  84. }
  85. }
  86.  
  87. public static void quick(int[] a, int left, int right) {
  88. if (left < right) {
  89. int middle = getMiddle(a, left, right);
  90. quick(a, left, middle);
  91. quick(a, middle + 1, right);
  92. }
  93. }
  94.  
  95. public static int getMiddle(int[] a, int left, int right) {
  96. int tmp = a[left];
  97. while (left < right) {
  98. while (a[right] >= tmp && right > left) {
  99. right--;
  100. }
  101. a[left] = a[right];
  102. while (a[left] <= tmp && left < right) {
  103. left++;
  104. }
  105. a[right] = a[left];
  106. }
  107. a[left] = tmp;
  108. return left;
  109. }
  110.  
  111. public static void bubblesort(int[] a) {
  112. for (int i = 0; i < a.length; i++) {
  113. for (int j = 0; j < a.length - i - 1; j++) {
  114. if (a[j] > a[j + 1]) {
  115. swap(a, j, j + 1);
  116. }
  117. }
  118. }
  119. for (int i = 0; i < a.length; i++) {
  120. System.out.println("bubblesort" + a[i]);
  121. }
  122. }
  123.  
  124. public static void heapsort(int[] a) {
  125. for (int i = a.length - 1; i >= 0; i--) {
  126. buildmaxheap(a, i);
  127. swap(a, i, 0);
  128.  
  129. }
  130. for (int i = 0; i < a.length; i++) {
  131. System.out.println("heapsort" + a[i]);
  132. }
  133. }
  134.  
  135. public static void swap(int[] a, int i, int j) {
  136. int temp = a[i];
  137. a[i] = a[j];
  138. a[j] = temp;
  139. }
  140.  
  141. public static void buildmaxheap(int[] a, int lastindex) {
  142. int length = a.length;
  143. if (lastindex >= length) {
  144. return;
  145. }
  146. int index = (lastindex - 1) / 2;
  147. for (; index >= 0; index--) {
  148. int left = index * 2 + 1;
  149. if (left <= lastindex) {
  150. if (a[index] < a[left]) {
  151. swap(a, index, left);
  152. }
  153. }
  154. if (left < lastindex && a[index] < a[left + 1]) {
  155. swap(a, index, left + 1);
  156. }
  157. }
  158. }
  159.  
  160. public static void selectsort(int[] a) {
  161. int pos = 0;
  162. for (int i = 0; i < a.length; i++) {
  163. pos = i;
  164. for (int j = i + 1; j < a.length; j++) {
  165. if (a[pos] > a[j]) {
  166. pos = j;
  167. }
  168. }
  169. if (pos != i) {
  170. int temp = a[i];
  171. a[i] = a[pos];
  172. a[pos] = temp;
  173. }
  174. }
  175. for (int i = 0; i < a.length; i++) {
  176. System.out.println("shellsort" + a[i]);
  177. }
  178. }
  179.  
  180. public static void shellsort(int[] a) {
  181. int length = a.length;
  182. System.out.println(length);
  183. for (int d = (int) Math.ceil(length / 2); d > 0; d /= 2) {
  184. for (int i = 0; i < d; i++) {
  185. System.out.println("i=" + i + " d=" + d);
  186. for (int j = i + d; j < length; j += d) {
  187. int temp = a[j];
  188. int k = j - d;
  189. System.out.println("j=" + j + " temp=" + temp + " k=" + k);
  190. for (; k >= 0 && temp < a[k]; k -= d) {
  191. System.out.println("k+d=" + (k + d) + " k=" + k + " a[k+d]=" + a[k + d] + " a[k]=" + a[k]);
  192. a[k + d] = a[k];
  193. }
  194. System.out.println("end" + "k+d=" + (k + d) + " a[k+d]=" + a[k + d] + " temp=" + temp);
  195. a[k + d] = temp;
  196. }
  197. }
  198. }
  199. for (int i = 0; i < a.length; i++) {
  200. System.out.println("shellsort" + a[i]);
  201. }
  202. }
  203.  
  204. public static void selectSort(int[] a) {
  205. int length = a.length;
  206. int position = 0;
  207. for (int i = 0; i < length - 1; i++) {
  208. int temp = a[i];
  209. int j = i + 1;
  210. position = i;
  211. for (; j < length; j++) {
  212. if (a[j] < temp) {
  213. temp = a[j];
  214. position = j;
  215. }
  216. }
  217. a[position] = a[i];
  218. a[i] = temp;
  219. }
  220. for (int i = 0; i < a.length; i++) {
  221. System.out.println("selectSort" + a[i]);
  222. }
  223. }
  224.  
  225. public static void insertSort(int[] a) {
  226. int temp = 0;
  227. for (int i = 1; i < a.length; i++) {
  228. int j = i - 1;
  229. temp = a[j + 1];
  230. for (; j >= 0 && a[j] > temp; j--) {
  231. System.out.println(j);
  232. a[j + 1] = a[j];
  233. }
  234. System.out.println(j);
  235. a[j + 1] = temp;
  236. }
  237. for (int i = 0; i < a.length; i++) {
  238. System.out.println(a[i]);
  239. }
  240. }
  241. }

8个排序算法——java的更多相关文章

  1. 八大排序算法Java

    目录(?)[-] 概述 插入排序直接插入排序Straight Insertion Sort 插入排序希尔排序Shells Sort 选择排序简单选择排序Simple Selection Sort 选择 ...

  2. 八大排序算法Java实现

    本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...

  3. 排序算法(Java实现)

    这几天一直在看严蔚敏老师的那本<数据结构>那本书.之前第一次学懵懵逼逼,当再次看的时候,发觉写的是非常详细,非常的好. 那就把相关的排序算法用我熟悉的Java语言记录下来了.以下排序算法是 ...

  4. 6种基础排序算法java源码+图文解析[面试宝典]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结6大基础算法.java版强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步:1.思想2.图 ...

  5. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  6. 九大排序算法Java实现

    之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录. 1.排序算法时间复杂 ...

  7. 排序系列 之 希尔排序算法 —— Java实现

    基本思想: 希尔排序的实质就是分组插入排序,又称缩小增量法. 将整个无序序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本 ...

  8. 十大基础排序算法[java源码+动静双图解析+性能分析]

    一.概述 作为一个合格的程序员,算法是必备技能,特此总结十大基础排序算法.java版源码实现,强烈推荐<算法第四版>非常适合入手,所有算法网上可以找到源码下载. PS:本文讲解算法分三步: ...

  9. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  10. 【排序算法】希尔排序算法 Java实现

    希尔排序算法是按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布,是插入排序的一种更高效的改进版本. 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎 ...

随机推荐

  1. Unity3D中使用委托和事件

    前言: 本来早就想写写和代码设计相关的东西了,以前做2DX的时候就有过写写观察者设计模式的想法,但是实践不多.现在转到U3D的怀抱中,倒是接触了不少委托事件的写法,那干脆就在此总结一下吧. 1.C#中 ...

  2. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  3. Linux网络相关配置

    一.修改网卡相关配置 Linux网络参数是在/etc/sysconfig/network-scripts/ifcfg-eth0中设置,其中ifcfg-eth0表示是第一个网卡,如果还有另外一块网卡,则 ...

  4. Kafka消费组(consumer group)

    一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka社区邮件组已经在讨论是否应该正式使用新版本consumer替换老版本,笔者也觉得时 ...

  5. 关系数据库SQL之可编程性触发器

    前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数.存储过程.事务.触发器及游标,前文已介绍了函数.存储过程.事务,本文来介绍一下触发器的使用.(还是以 ...

  6. python爬虫的一些心得

    爬虫用于从网上得到目标数据,根据需要对其予以利用,加以分析,得到想要的实验成果.现在讲一讲我这两天学到的东西. 第一,爬虫的算法结构,包括以下几个方面: (1)读取网络数据 (2)将获取的数据解析为目 ...

  7. 【python常用函数1】

    ## 1 ##获取输入值 a = raw_input("请输入:") if a == str(1): print "success" else: print & ...

  8. Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项

    1.Oracel数据库没有字段自增长属性,要实现自增长通常是通过查询序列或者触发器来实现的. 设置自增长主键 alter table SUB_SUBSCRIPTION add primary key( ...

  9. quartz CronExpression表达式

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素.按顺序依次为1.秒(0~59)2.分钟(0~59)3.小时(0~23)4.天(月)(0~31,但是你需要考虑你月的天数)5.月(0~11 ...

  10. Java NIO概述

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然 Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Se ...