《查找和排序(折半查找、二叉插入查找、直接插入排序、折半排序、快速排序、选择排序、堆排序、归并排序)》由会员分享,可在线阅读,更多相关《查找和排序(折半查找、二叉插入查找、直接插入排序、折半排序、快速排序、选择排序、堆排序、归并排序)(9页珍藏版)》请在金锄头文库上搜索。
1、查找和排序查找和排序( (折半查找、二叉插入查找、直接插入排序、折半排序、折半查找、二叉插入查找、直接插入排序、折半排序、快速排序、选择排序、堆排序、归并排序快速排序、选择排序、堆排序、归并排序) )#includeusing namespace std;typedef structint *elem;int length;SSTable;/折半查找int Search_Bin(SSTable st,int key)int low=1,high=st.length;while(lowhigh)coutdata=key;T-lchild=T-rchild=NULL;return false;if
2、(key=T-data)return true;else if(keydata)return SearchandIn(T-lchild,key);elsereturn SearchandIn(T-rchild,key);#define Maxsize 20typedef structint key;RedType,*red;typedef structRedType rMaxsize+1;int length;list,heap;/插入排序void InsertSort(list i=high+1;-j)L.rj+1=L.rj;L.rhigh+1=L.r0;int Partition(list
3、 while(low=pivotkey)-high;int temp=L.rlow.key;L.rlow.key=L.rhigh.key;L.rhigh.key=temp;while(low=1;-i)HeapAdjust(H,i,H.length);for(i=H.length-1;i0;i-)RedType temp=H.r1;H.r1=H.ri;H.ri=temp;HeapAdjust(H,1,i-1);/归并排序void Merge(list L,list in;st.length=n;coutst.elemi;coutkey;coutn;L.length=n+1;coutL.ri.key;InsertSort(L);BInsertSort(L);QSort(L,1,L.length-1);SelectSort(L);HeapSort(L);MergeSort(L);showlist(L);