首页 > 语言 > JavaScript > 正文

javascript数组排序汇总

2024-05-06 16:22:49
字体:
来源:转载
供稿:网友

本文给大家汇总了一下javascript的数组排序算法,包括冒泡排序、快速排序、插入排序、希尔排序,希望对大家熟悉javascript数组排序能够有所帮助。

javascript数组排序汇总

  1. //排序算法 
  2. window.onload = function(){ 
  3. var array = [0,1,2,44,4, 
  4. 324,5,65,6,6, 
  5. 34,4,5,6,2, 
  6. 43,5,6,62,43, 
  7. 5,1,4,51,56, 
  8. 76,7,7,2,1, 
  9. 45,4,6,7,8]; 
  10. //var array = [4,2,5,1,0,3]; 
  11. console.log('原始数组'); 
  12. console.log(array); 
  13. array = sorting.shellSort(array); 
  14. // alert(array); 
  15. console.log('排序后的数组'
  16. console.log(array); 
  17.  
  18. var sorting = { 
  19. //利用sort方法进行排序 
  20. systemSort: function(arr){ 
  21. return arr.sort(function(a,b){ 
  22. return a-b; 
  23. }); 
  24. }, 
  25.  
  26. //冒泡排序 
  27. bubbleSort: function(arr){ 
  28. var len=arr.length, tmp; 
  29. for(var i=0;i<len-1;i++){ 
  30. for(var j=0;j<len-1-i;j++){ 
  31. if(arr[j]>arr[j+1]){ 
  32. tmp = arr[j]; 
  33. arr[j] = arr[j+1]; 
  34. arr[j+1] = tmp; 
  35. return arr; 
  36. }, 
  37.  
  38. //快速排序 
  39. quickSort: function(arr){ 
  40. var low=0, high=arr.length-1; 
  41. sort(low,high); 
  42. function sort(low, high){ 
  43. if(low<high){ 
  44. var mid = (function(low, high){ 
  45. var tmp = arr[low]; 
  46. while(low<high){ 
  47. while(low<high&&arr[high]>=tmp){ 
  48. high--; 
  49. arr[low] = arr[high]; 
  50. while(low<high&&arr[low]<=tmp){ 
  51. low++; 
  52. arr[high] = arr[low]; 
  53. arr[low] = tmp; 
  54. return low; 
  55. })(low, high); 
  56. sort(low, mid-1); 
  57. sort(mid+1,high); 
  58. return arr; 
  59. }, 
  60.  
  61. //插入排序 
  62. insertSort: function(arr){ 
  63. var len = arr.length; 
  64. for(var i=1;i<len;i++){ 
  65. var tmp = arr[i]; 
  66. for(var j=i-1;j>=0;j--){ 
  67. if(tmp<arr[j]){ 
  68. arr[j+1] = arr[j]; 
  69. }else
  70. arr[j+1] = tmp; 
  71. break
  72. return arr; 
  73. }, 
  74.  
  75. //希尔排序 
  76. shellSort: function(arr){ 
  77. var h = 1; 
  78. while(h<=arr.length/3){ 
  79. h = h*3+1; //O(n^(3/2))by Knuth,1973 
  80. for( ;h>=1;h=Math.floor(h/3)){ 
  81. for(var k=0;k<h;k++){ 
  82. for(var i=h+k;i<arr.length;i+=h){ 
  83. for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){ 
  84. var tmp = arr[j]; 
  85. arr[j] = arr[j-h]; 
  86. arr[j-h] = tmp; 
  87. return arr; 


以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选