C++STL之希爾排序

b36g 9年前發布 | 1K 次閱讀 C/C++

/*
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!