C++STL之希爾排序
/* shellSort.h **/include "stdafx.h"
include <vector>
using namespace std;
template <typename T> void shellSort(vector<T>& vec) { int gap = vec.size()/2; for (; gap != 0; gap = gap/2) { shellSort(vec, gap); //以gap步長為參數進行排序 } } template <typename T> void shellSort(vector<T>& vec, int gap) { int i = gap; for (; i < vec.size(); i++) // 從gap 到 vec.size()之間 { //這種循環交換的思想,省去每次比較都要交換的次數 T tempValue = vec[i]; int j = i; for (; j >= gap && tempValue < vec[j - gap] ; j = j - gap) //這里其實進行的是倒序循環 { vec[j] = vec[j - gap]; } vec[j] = tempValue; } }</pre>
本文由用戶 b36g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!