JavaScript算法-希尔排序

  • 希尔排序
  • 这个算法在插入排序的基础上作出了很大的改善。希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻的元素。和简单的比较相邻元素相比,使用这种方案可以使离正确位置很远的元素更快回到适合的位置。当开始用这个算法遍历数据集时,所有元素之间的距离会不断减小,直到处理到数据集的末尾,这时算法比较的就是相邻元素了。
  • 主要是通过遍历数组中相隔相同位置的元素去比较大小进行排列
  1. function shellsort() {
  2. for (var g = 0; i <
  3. this.gaps.length; ++g) {
  4. for (var i = 0; i < this.dataStore.length; ++i) {
  5. var temp = this.dataStore[i];
  6. for (var j = i; j >= this.gaps[g] && this.dataStore[j-this.gaps[g]] > temp; j -= this.gaps[g]) {
  7. this.dataStore[j] = this.dataStore[j-this.gaps[g]];
  8. }
  9. this.dataStore[j] = temp;
  10. }
  11. }
  12. }
  • CArray构造函数中添加
  1. this.gaps = [5,3,1];
  2. //并添加一个函数
  3. function setGap(arr) {
  4. this.gaps = arr ;
  5. }