JavaScript数据结构24—简单的排序算法

简单的排序算法包括了

  • 冒泡
  • 简单选择
  • 直接插入
//排序算法
//冒泡
Array.prototype.bubbleSort = function() {
  var flag = true;
  for (var i = 0; i < this.length-1&&flag; i++) {
    flag = false;
    for (var j = this.length-1; j >= i; j--) {
      if(this[i]>this[j+1]){
        var temp = this[i];
        this[i] = this[j+1];
        this[j+1] = temp;
        flag = true;
      }
    }
  }
  console.info('排序后的序列:\n'+this);
};
//简单选择
Array.prototype.selectSort = function(){
  var min;
  for (var i = 0; i < this.length-1; i++) {
    min = i;
    for (var j = i+1; j < this.length; j++) {
      if(this[min]>this[j]){
        min = j;
      }
    }
    if(i!=min){
      var temp = this[i];
      this[i] = this[min];
      this[min] = temp;
    }
  }
  console.info('排序后的序列:\n'+this);
}
//直接插入
Array.prototype.insertSort = function(){
  for (var i = 1; i<this.length ; i++) {
    if(this[i]<this[i-1]){
      var temp = this[i];
      for (var j = i-1; this[j]>temp; j--) {
        this[j+1] = this[j];
      }
      this[j+1] = temp;
    }
  }
  console.info('排序后的序列:\n'+this);
}
function randArray(max,size){
  var a = [];
  for (var i = 0; i < size; i++) {
    a[i] = parseInt(Math.random()*max);
  }
  console.info('(随机情况)生成了序列:\n'+a);
  return a;
}
function bestArray(max,size){
  var a = [];
  var q = 0;
  for (var i = 0; i < size; i++) {
    q += parseInt(Math.random()*max);
    a[i] = q;
  }
  console.info('(最好情况)生成了序列:\n'+a);
  return a;
}
function worstArray(max,size){
  var a = [];
  var q = max;
  for (var i = 0; i < size; i++) {
    q -= parseInt(Math.random()*max);
    a[i] = q;
  }
  console.info('(最坏情况)生成了序列:\n'+a);
  return a;
}
var array1 = randArray(5000,10);
array1.bubbleSort();
var array2 = worstArray(5000,10);
array2.bubbleSort();
var array3 = bestArray(5000,10);
array3.bubbleSort();
var array4 = randArray(5000,10);
array4.selectSort();
var array5 = bestArray(5000,10);
array5.selectSort();
var array6 = worstArray(5000,10);
array6.selectSort();
var array7 = randArray(5000,10);
array7.insertSort();
var array8 = bestArray(5000,10);
array8.insertSort();
var array9 = worstArray(5000,10);
array9.insertSort();

output

(随机情况)生成了序列:
2099,3712,3015,564,160,1963,4359,756,4732,2394
排序后的序列:
160,564,756,1963,2099,2394,4359,3015,4732,3712
(最坏情况)生成了序列:
2266,-915,-1239,-4037,-4885,-5704,-6083,-6644,-8599,-12524
排序后的序列:
-12524,-8599,-6644,-6083,-5704,-4885,-4037,-1239,-915,2266
(最好情况)生成了序列:
829,2664,5136,5983,7477,9677,13823,14841,15536,17049
排序后的序列:
829,2664,5136,5983,7477,9677,13823,14841,15536,17049
(随机情况)生成了序列:
3397,3270,838,732,4196,830,503,2474,3900,1809
排序后的序列:
503,732,830,838,1809,2474,3270,3397,3900,4196
(最好情况)生成了序列:
4619,8459,9709,10888,12046,13674,14885,18939,19094,21715
排序后的序列:
4619,8459,9709,10888,12046,13674,14885,18939,19094,21715
(最坏情况)生成了序列:
4659,2310,-586,-2784,-6562,-6989,-9984,-13033,-16484,-20037
排序后的序列:
-20037,-16484,-13033,-9984,-6989,-6562,-2784,-586,2310,4659
(随机情况)生成了序列:
2497,1520,2311,4395,4348,2938,1978,4191,1546,4961
排序后的序列:
1520,1546,1978,2311,2497,2938,4191,4348,4395,4961
(最好情况)生成了序列:
2535,6264,7224,9153,12233,15759,17180,19071,22544,23599
排序后的序列:
2535,6264,7224,9153,12233,15759,17180,19071,22544,23599
(最坏情况)生成了序列:
1491,-2131,-3944,-6593,-10771,-14487,-15923,-17742,-19641,-24606
排序后的序列:
-24606,-19641,-17742,-15923,-14487,-10771,-6593,-3944,-2131,1491
[Finished in 0.1s]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 某次二面时,面试官问起Js排序问题,吾绞尽脑汁回答了几种,深感算法有很大的问题,所以总计一下! 排序算法说明 (1...
    流浪的先知阅读 4,914评论 0 4
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • /*去重*/ function delRepeat(arr){ var newArray=new Array();...
    Hedgehog_Dove阅读 5,870评论 0 2
  • 沈小枝那年四岁,爸妈又去了外地(多年前大家都认为外地比在家里有出息)那时的小枝还小,整天只知道玩.到了该上幼儿园的...
    花红不过旧时辰阅读 2,790评论 0 0
  • 会稽愚妇如是说 男儿成名须趁早,孜孜修学涉远道。 买臣负薪却长歌,路人窃笑歌能饱。 腹中无粒相随久,富贵无期辞家走...
    悠游鱼阅读 1,911评论 1 1