codecamp

实现直接插入排序

我们来看下面的排序方法是插入排序中的一种--直接插入排序。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度

为O(n^2)。是稳定的排序方法。插入算法把要排序的

数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

var array = [];
(function createArray(size) {
  array.push(+(Math.random() * 100).toFixed(0));
  return (size > 1) ? createArray(size - 1) : undefined;
})(12);


function insertionSort(array) {
  // change code below this line
  for(var i=1;i<array.length;i++){
      //升序排列
      //思想:在原数组中预留位置给待插入的新数组,小的数往左边放置
      /*while(j>0&&array[j]>array[j+1]){
        var temp=array[j];
        array[j+1]=temp;
        j--;
      }*/
      for(var j=i;j>0;j--){
          if (array[j]>array[j+1]) {
              var temp=array[j];
              array[j+1]=temp;

              
          }
      }

      
  }


  // change code above this line
  return array;
}
insertionSort(array);
实现选择排序
实现快速排序
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }