注册 | 登录
欢迎注册会员

当前位置:首页 > 软件编程 > JAVA技术 > 正文

常见的java排序方法

来源:程序人生 【 】 浏览:2075 添加日期:2010-07-05 23:11:05 我要评论(0)
Java Code复制内容到剪贴板
  1. import?java.util.Arrays; ??
  2. public?class?Sort?{ ??
  3. ? ??
  4. ?//冒泡排序(从头到尾排) ??
  5. ?public?static?void?bubbleSort(int[]?arrays) ??
  6. ?{ ??
  7. ??//第一次循环从第一个元素开始,到倒数第二个元素 ??
  8. ??for(int?i=0;i<>1;i++) ??
  9. ??{ ??
  10. ???for(int?j=1;j
  11. ???{ ??
  12. ????if(arrays[j-1]>arrays[j]) ??
  13. ????{ ??
  14. ?????int?temp=arrays[j-1]; ??
  15. ?????arrays[j-1]=arrays[j]; ??
  16. ?????arrays[j]=temp; ??
  17. ????} ??
  18. ???} ??
  19. ??} ??
  20. ?} ??
  21. ? ??
  22. ?//选择排序 ??
  23. ? ??
  24. ?public?static?void?selectSort(int[]?arrays) ??
  25. ?{ ??
  26. ??//第一次循环从第一个元素开始,到倒数第二个元素 ??
  27. ??for(int?i=0;i<>1;i++) ??
  28. ??{ ??
  29. ???//标识当前的最小元素的位置 ??
  30. ???int?ind=i; ??
  31. ???for(int?j=i+1;j
  32. ???{ ??
  33. ????if(arrays[j]
  34. ????{ ??
  35. ?????ind=j; ??
  36. ????} ??
  37. ???} ??
  38. ???if(ind!=i) ??
  39. ???{ ??
  40. ????int?temp=arrays[ind]; ??
  41. ????arrays[ind]=arrays[i]; ??
  42. ????arrays[i]=temp; ??
  43. ???} ??
  44. ??} ??
  45. ?} ??
  46. ? ??
  47. //插入排序 ??
  48. ?public?static?void?insertSort(int[]?arrays) ??
  49. ?{ ??
  50. ??//第一次循环从第二个元素开始,到最后一个元素 ??
  51. ??//arrays[i]是当前需要插入的元素 ??
  52. ??for(int?i=1;i
  53. ??{ ??
  54. ???//当前已经排好序的数组长度是i ??
  55. ???int?temp=arrays[i]; ??
  56. ???int?ind=i; ??
  57. ???for(int?j=i-1;j>=0;j--) ??
  58. ???{ ??
  59. ????//如果找到了比arrays[j]小的,那么就将已经排好序的数组的当前位置后的所有元素后移一位,并将需要插入的元素放入该位置j ??
  60. ????if(temp
  61. ????{ ??
  62. ?????arrays[j+1]=arrays[j]; ??
  63. ?????ind=j; ??
  64. ????} ??
  65. ????else??
  66. ????{ ??
  67. ?????break; ??
  68. ????} ??
  69. ???} ??
  70. ???arrays[ind]=temp; ??
  71. ??} ??
  72. ?} ??
  73. ? ??
  74. ?//快速排序 ??
  75. ?public?static?void?quickSot(int[]?arrays,int?left,int?right) ??
  76. ?{ ??
  77. ??if(left>=right) ??
  78. ??{ ??
  79. ???return; ??
  80. ??} ??
  81. ??int?compInd=left;//选取第一个数作为比较的基石 ??
  82. ??int?i=left; ??
  83. ??int?j=right; ??
  84. ??while(i
  85. ??{ ??
  86. ??for(;j>=i;j--) ??
  87. ??{ ??
  88. ???if(arrays[j]
  89. ???{ ??
  90. ????int?temp=arrays[j]; ??
  91. ????arrays[j]=arrays[compInd]; ??
  92. ????arrays[compInd]=temp; ??
  93. ????compInd=j; ??
  94. ????break; ??
  95. ???} ??
  96. ??} ??
  97. ??for(;i<=j;i++) ??
  98. ??{ ??
  99. ???if(arrays[i]>arrays[compInd]) ??
  100. ???{ ??
  101. ????int?temp=arrays[i]; ??
  102. ????arrays[i]=arrays[compInd]; ??
  103. ????arrays[compInd]=temp; ??
  104. ????compInd=i; ??
  105. ????break; ??
  106. ???} ??
  107. ??} ??
  108. ??} ??
  109. ??quickSot(arrays,left,compInd-1); ??
  110. ??quickSot(arrays,compInd+1,right); ??
  111. ?} ??
  112. ? ??
  113. ?//归并排序(两个有序的数组) ??
  114. ?public?static?int[]?merger(int[]?a,int?[]?b) ??
  115. ?{ ??
  116. ??int[]?result=new?int[a.length+b.length]; ??
  117. ??int?ind=0; ??
  118. ??int?ind1=0; ??
  119. ??int?ind2=0; ??
  120. ??while(ind1<>
  121. ??{ ??
  122. ???if(a[ind1]
  123. ???{ ??
  124. ????result[ind++]=a[ind1++]; ??
  125. ???} ??
  126. ???else??
  127. ???{ ??
  128. ????result[ind++]=b[ind2++]; ??
  129. ???} ??
  130. ??} ??
  131. ??while(ind1
  132. ??{ ??
  133. ???result[ind++]=a[ind1]; ??
  134. ???ind1++; ??
  135. ??? ??
  136. ??} ??
  137. ??while(ind2
  138. ??{ ??
  139. ???result[ind++]=b[ind2]; ??
  140. ???ind2++; ??
  141. ??} ??
  142. ??return?result; ??
  143. ?} ??
  144. ? ??
  145. ?//希尔排序??steps为增量数组,前面的元素大于后面的元素,并且最后一个元素值为1?,例如{?5,?3,?1?} ??
  146. ?public?static?void?shellSort(int[]?arrays,int[]?steps) ??
  147. ?{ ??
  148. ??for(int?step:steps) ??
  149. ??{ ??
  150. ???for(int?i=0;i
  151. ???{ ??
  152. ????for(int?j=i;j
  153. ????{ ??
  154. ?????//选择排序 ??
  155. ?????int?ind=j; ??
  156. ?????for(int?k=j+step;k
  157. ?????{ ??
  158. ??????if(arrays[k]
  159. ??????{ ??
  160. ???????ind=k; ??
  161. ??????} ??
  162. ?????} ??
  163. ?????if(ind!=j) ??
  164. ?????{ ??
  165. ??????int?temp=arrays[ind]; ??
  166. ??????arrays[ind]=arrays[j]; ??
  167. ??????arrays[j]=temp; ??
  168. ?????}? ??
  169. ???? ??
  170. ????} ??
  171. ???} ??
  172. ??} ??
  173. ?} ??
  174. ? ??
  175. ?public?static?void?main(String[]?args)?{ ??
  176. ??int[]?a=new?int[]{6,3,13,8,5,10,12,16,4,6}; ??
  177. //??bubbleSort(a); ??
  178. //??selectSort(a); ??
  179. //??insertSort(a); ??
  180. //??quickSot(a,0,a.length-1); ??
  181. ??shellSort(a,new?int[]{?5,?3,?1?}); ??
  182. ??System.out.println(Arrays.toString(a)); ??
  183. ?} ??
  184. ? ??
  185. }??

你浏览的文章是 - 《常见的java排序方法》!
文章出处:https://www.procedurelife.com/content/bkkcb.html
100% (1)
0% (0)
评论0
头像 游客
1 2