待排序数据表的类定义 #ifndef datalist h #define datalist h #include <iostream h> const int Defaultsize=100 template <class Type> class datalist t template <class Type> class Element i private pe key, 关键码 field otherdata 其它数据成员 public: Element(: key(0), otherdata null
待排序数据表的类定义 #ifndef DATALIST_H #define DATALIST_H #include <iostream.h> const int DefaultSize = 100; template <class Type> class datalist { template <class Type> class Element { private: Type key; //关键码 field otherdata; //其它数据成员 public: Element ( ) : key(0), otherdata(NULL){ }
Type getKey(){ return key;}/提是取关键码 void setKey( const Type x){kegy=x;}∥修改 Element<Type>& operator 赋值 Element<Type>&x)i this =x;) int operator==( Type &x) //Fthis ==x freturn!( this <xx< this ) int operator =( Type &x) /判this!=x f return this <xx< this; 3 int operator <= Type &x) /倒判this≤x freturn!( this>x);) int operator>=(Type&x)/判]this≥x f return!( this <x; int operator < Type &x) /倒判this<x freturn this>x;)
Type getKey ( ) { return key; }//提取关键码 void setKey ( const Type x ) { key = x; } //修改 Element<Type> & operator = //赋值 ( Element<Type> & x ) { this = x; } int operator == ( Type & x ) //判this == x { return ! ( this < x || x < this ); } int operator != ( Type & x ) //判this != x { return this < x || x < this; } int operator <= ( Type & x ) //判this x { return ! ( this > x ); } int operator >= ( Type & x ) //判this x { return ! ( this < x ); } int operator < ( Type & x ) //判this < x { return this > x; }
template <class Type> class datalist i public: datalist( int Maxsz= Defaultsize):/构造函数 MaxSize( maxsz ) Currentsize(o i vector=new Element <Type>[MaxSz: j void swap( Element<Type>&x,/对换 Element <Type> &y) f Element<Type> temp=x;x=y; y=temp; 3 private: Element<Type>* Vector;/存储向量 int Max size, Currentsize;/最大与当前个数
} template <class Type> class datalist { public: datalist ( int MaxSz = DefaultSize ) : //构造函数 MaxSize ( Maxsz ), CurrentSize (0) { Vector = new Element <Type> [MaxSz]; } void swap ( Element <Type> & x, //对换 Element <Type> & y ) { Element<Type> temp = x; x = y; y = temp; } private: Element <Type> * Vector; //存储向量 int MaxSize, CurrentSize; //最大与当前个数 }
插入排序( Insert Sorting) 插入排序的基本方法是:每步将一个待排序的对 象,按其关键码大小,插入到前面已经排好序的 组对象的适当位置上,直到对象全部插入为止。 直接插入排序( nsert Sort 直接插入排序的基本思想是:当插入第(≥1) 个对象时,前面的Ⅵ0,Ⅵ11,…,v1已经排好 序。这时,用v的关键码与v1,vi21,…的 关鍵码顺序进行比较,找到插入位置即将叫插 入,原来位置上的对象向后顺移
插入排序 (Insert Sorting) 直接插入排序的基本思想是:当插入第i (i 1) 个对象时,前面的V[0], V[1], …, v[i-1]已经排好 序。这时,用v[i]的关键码与v[i-1], v[i-2], …的 关键码顺序进行比较,找到插入位置即将v[i]插 入,原来位置上的对象向后顺移。 插入排序的基本方法是:每步将一个待排序的对 象,按其关键码大小,插入到前面已经排好序的 一组对象的适当位置上,直到对象全部插入为止。 直接插入排序 (Insert Sort)
各 趟 排 21 25//49 25 608 序 012345 结 果 =1目 49 25 6(8 25 2 3 5 temp 49 i=2 2125 08 012345 tem
各 趟 排 序 结 果 21 25 49 25* 16 08 0 1 2 3 4 5 0 1 2 3 4 5 temp 21 25 49 25* 16 08 i = 1 25 0 1 2 3 4 5 temp 21 25 49 25* 16 08 49 i = 2