数据结构——希尔排序(c++)
来源:互联网 发布:linux运维和java开发 编辑:程序博客网 时间:2024/06/08 11:51
ShellSorter.h
//ShellSorter.h//Shell排序类#include "Sorter.h"template <class Record>class ShellSorter:public Sorter<Record>{private: // 针对变化的增量而修改的插入排序算法,参数delta表示当前的增量 void ModifiedInsertSort(Record Array[],int n,int delta);public: void Sort(Record Array[],int n);};//Shell排序,Array[]为待排序数组,n为数组长度template <class Record>void ShellSorter<Record>::Sort(Record Array[], int n) { int i,delta; for(delta=n/2;delta>0;delta/=2) { for(i=0;i<delta;i++) { ModifiedInsertSort(&Array[i],n-i,delta); } }}// 针对变化的增量而修改的插入排序算法,参数delta表示当前的增量template <class Record>void ShellSorter<Record>::ModifiedInsertSort(Record Array[],int n, int delta) { int i,j; for(i=delta;i<n;i+=delta) { for(j=i;j>=delta;j-=delta) { if(Array[j]<Array[j-delta]) swap(Array,j,j-delta); else break; } }}
Sorter.h
//Sorter.h#if !defined(AFX_Sorter)#define AFX_Sorter//总排序类template <class Record>class Sorter{protected: static void swap(Record Array[],int i,int j); //交换数组中的两个记录public: virtual void Sort(Record Array[],int n)=0; //对数组Array进行排序 void PrintArray(Record array[], int n); //输出数组内容};//交换数组中的两个记录template <class Record>void Sorter<Record>::swap(Record Array[],int i,int j){ Record TempRecord = Array[i]; Array[i] = Array[j]; Array[j] = TempRecord;}//输出数组内容template <class Record>void Sorter<Record>::PrintArray(Record Array[], int n){ for(int i=0;i<n;i++) cout<<Array[i]<<" "; cout<<endl;} #endif
ShellSort.cpp
//ShellSort.cpp//Shell排序#include <iostream.h>#include <stdlib.h>#include <string.h>#include <time.h>#include "Sorter.h"#include "ShellSorter.h"const int N=1000;// 设定随即函数的种子inline void Randomize() { srand(1); }//返回一个0到n-1之间的随机数inline int Random(int n) { return rand() % (n); }void main(){ ShellSorter<int> s; int Array[8]; for(int i=0;i<8;i++) { Array[i]=Random(50); } s.Sort(Array,8); s.PrintArray(Array,8);}
0 0
- 数据结构——希尔排序(c++)
- 数据结构—希尔排序
- 数据结构 — 希尔排序
- 数据结构——希尔排序
- 排序——希尔排序(C++)
- 《数据结构与算法分析(c描述)》—— 插入排序&希尔排序
- 数据结构之希尔排序(C语言)
- 数据结构排序算法——希尔排序
- 数据结构(排序)---希尔排序
- 开始学数据结构——(六):希尔排序
- 数据结构与算法——希尔排序(Java实现)
- 数据结构之——希尔排序
- 数据结构与算法——希尔排序
- 数据结构与算法——希尔排序
- 【大话数据结构&算法】希尔排序(Java/C实现源码)
- 希尔排序(c++)
- 数据结构与算法——插入类排序(直接插入排序,希尔排序)
- 数据结构 C语言实现希尔排序
- Spring MVC基本原理
- Fragment与Activity生命周期
- 泛型的使用总结
- CSDN上的疑问??
- MFC 对话框操作
- 数据结构——希尔排序(c++)
- 2015四川省赛 scu oj 4445 Right turn
- 第十三周项目1-动物这样叫(2)
- java中的几种内部类
- 数据结构——改进的冒泡排序(c++)
- TCP三次握手和四次挥手协议
- 操作系统如何把程序从磁盘加载到内存并创建进程的?
- 【Ubuntu Server版安装提示无法找到ISO文件】 解决方案
- C++对ASCII文件的读写操作