⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shell.cpp

📁 数据结构与程序设计教材源码 数据结构与程序设计教材源码
💻 CPP
字号:
 
template <class Record>
void Sortable_list<Record>::sort_interval(int start, int increment)
/* 
 
Pre:   start is a valid list position and increment is a valid stepping length.
Post: The entries of the Sortable_list have been rearranged so that the keys in all the
      entries are sorted into nondecreasing order based on certain positions
      calculated by start and increment.
Uses: Methods for classes Record and Key.
      The contiguous List implementation of ?list_ch?.
 
*/

{
   int first_unsorted;    //  position of first unsorted entry
   int place;             //  searches sorted part of list
   Record current;        //  used to swap entries

   for (first_unsorted = start + increment; first_unsorted < count; first_unsorted += increment)
      if (entry[first_unsorted] < entry[first_unsorted - increment]) {
         place = first_unsorted;
         current = entry[first_unsorted];   //  Pull entry[first_unsorted] out of the list.
         do {                           //  Shift all previous entries one place down the list
            entry[place] = entry[place - increment];     //  until the proper place is found.
            place -= increment;             //  Position place is now available for insertion.
         } while (place > start && entry[place - increment] > current);
         entry[place] = current;
      }
}
 
template <class Record>
void Sortable_list<Record>::shell_sort()
/* 
 
Post: The entries of the Sortable_list have been rearranged so that the keys in all the
      entries are sorted into nondecreasing order.
Uses: sort_interval
 
*/

{
   int increment,    //  spacing of entries in sublist
       start;        //  starting point of sublist
   increment = count;

   do {
      increment = increment / 3 + 1;
      for (start = 0; start < increment; start++)
         sort_interval(start, increment);  //  modified insertion sort
   } while (increment > 1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -