1、排序程序小结冒泡排序并归排序插入排序等精程序在VC6.0下运行测试通过,包含三个文件:sort_all.h排序类的定义;sort_real.cpp排序类成员函数定义;sort_mai n.h运行的主函数。包括冒泡排序、并归排序、插入排序、选择排序、快速排序、堆排序、 Shell排序 sort_all.h 文件 #i ncludeusing n amespace std;/*/class sort_allpublic:void swap_i(i nt &a, int &b;void disp_array(i nt *array, in t le n;void disp_ nu m(;void s
2、ort_maopao(i nt *array, int len;void sort_quick(i nt *array, int start, int end;void sort_merge(i nt * array, int start, i nt end;void sort_heap(i nt *array, int len;void sort_select(i nt *arra y, int len;void sort_i nsert(i nt *array, in t le n;void sort_shell(i nt *arra y, int len;sort_real.cpp 文件
3、#include sort all.hvoid sort_all:disp_array(i nt *array, int lenfor(i nt i=0; icout arrayi ;cout en dl;void sort_all:swap_i(i nt &a, int &bint temp;temp = a;a = b;b = temp;void sort_all:disp_ num(cout -冒泡排序,输入1- ncout -并归排序,输入2- ncout -插入排序,输入3- ncout -选择排序,输入4- ncout -快速排序,输入5- ncout -堆排序,输俞入 6- n;
4、cout -Shell 排序,输入7- n;cout 结束,输入0- n;堆排序void heap_adj(i nt *array, int i, i nt lenint n Temp;int nChild;for(nTemp = arrayi; 2*i+1nChild = 2*i+1;if(n Childn Child +;if(nChild nTemparrayi = array n Child;elsebreak;array nChild = n Temp;void heap_create(i nt *array, int lenfor(i nt i=le n/2; i=0; i-hea
5、p_adj(array,i, le n;void sort_all:sort_heap(i nt *arra y, int len heap_create(array, le n;for(int i=len-1; i0; i-swap_i(arrayO, arrayi;heap_adj(array, 0, i;/*void sort_all:sort_i nsert(i nt *array, int lenint i,j;int temp;for(i=1; itemp = arrayi;for(j=i; j0 & arrayj-1 temp; j-arrayj = arrayj-1;array
6、j = temp;*void sort_all:sort_maopao(i nt *array, in t le n int i,j;for(i=0; ifor(j=le n-1; j=i; j-if(arrayj arrayj+1swap_i(arrayj,arrayj+1; */void merge(int * array, int start, int mid, int end int len_A = mid - start + 1;int len_B = end - mid;int *A = new in tlen_A;int *B = new in tlen_B;int i,j;fo
7、r(i=0; iAi = arrayi +start; for(i=0; iBi = arrayi + mid+1; i=0;j=0;int temp;int k=start;while(iif(Ai Bjtemp = Ai;i+;elsetemp = Bj;j+;arrayk+ = temp;while(iarrayk+ = Ai+;while(jarrayk+ = Bj+;void sort_all:sort_merge(i nt * array, int start, i nt endif(start = endreturn;else int mid = (start+e nd/2; s
8、ort_merge(array, start, mid; sort_merge(array, mid+1, end; merge(array, start, mid, end;/*丿!快速排序 */void sort_all:sort_quick(i nt *array, int start, int end int key = arraystart;int i = start;int j = end;if(i=jreturn;while(iwhile(ij-;arrayi = arrayj;while(i = arrayii+;arrayj = arrayi;arrayi = key;sor
9、t_quick(array, start, i-1;sort_quick(array, i+1, end; *void sort_all:sort_select(i nt *arra y, in t le n int i,j;int n temp;int key;for(i=0; ikey = arrayi;ntemp = i;for(j=i+1; j if(arrayj arrayj n temp = j;swap_i(arrayi, array ntemp;/* Shell 申 序 */ void sort_all:sort_shell(i nt *array, int len int s
10、tep = len;int i;while(step 1 step = (step+1/2;for(i=0; i if(arrayi+step arrayi swap_i(arrayi+step, arrayi; sort_mai n.cpp 文件#in elude sort_all.hint mai n(int in put = 2,4,5,1,5,8,10,-2,4;int len = sizeof( in put/sizeof(i nt;int N;sort_all in sta nee;while(1in sta nce.disp_ nu m(;cout N;if(N=0break;c
11、out n;cout 原始数据: n;in sta nce.disp_array(i nput, le n;switch(Ncase 1:in sta nce.sort_maopao(i nput, le n;cout 冒泡排序结果: n;break;case 2:in sta nce.sort_merge(i nput, 0, le n-1;cout 并归排序结果: n;break;case 3:in sta nce.sort_i nsert(i nput, le n;cout 插入排序结果: n;break;case 4:in sta nce.sort_select(i nput, le n;cout 选择排序结果: n;break;case 5:in sta nce.sort_quick(i nput, 0, le n-1;cout 快速排序结果: n;break;case 6:in sta nce.sort_heap(i nput, le n;cout 堆排序结果: n;break;case 7:in sta nce.sort_shell(i nput, le n;cout Shell 排序结果: n;default:break;in sta nce.disp_array(i nput, le n;cout n;cout en dl;return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1