排序程序小结(冒泡排序、并归排序、插入排序等)(精)_汇编冒泡排序程序
排序程序小结(冒泡排序、并归排序、插入排序等)(精)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“汇编冒泡排序程序”。
程序在VC6.0下运行测试通过,包含三个文件:sort_all.h排序类的定义; sort_real.cpp排序类成员函数定义;sort_main.h运行的主函数。
包括冒泡排序、并归排序、插入排序、选择排序、快速排序、堆排序、Shell排序 ——————sort_all.h文件—————————————————— #include using namespace std;/****************************************/ cla sort_all { public: void swap_i(int &a, int &b;void disp_array(int *array, int len;void disp_num(;void sort_maopao(int *array, int len;void sort_quick(int *array, int start, int end;void sort_merge(int * array, int start, int end;void sort_heap(int *array, int len;void sort_select(int *array, int len;void sort_insert(int *array, int len;void sort_shell(int *array, int len;};——————————————————————————————————————
————————sort_real.cpp文件——————————————————————
#include “sort_all.h”
void sort_all::disp_array(int *array, int len { for(int i=0;i { cout
} /**************************************************/ /**************堆排序 ******************************/ /**************************************************/ void heap_adj(int *array, int i, int len { int nTemp;int nChild;for(nTemp = array[i];2*i+1 { nChild = 2*i+1;if(nChild nChild ++;if(nChild nTemp array[i] = array[nChild];else break;array[nChild] = nTemp;} } void heap_create(int *array, int len { for(int i=len/2;i>=0;i--heap_adj(array,i, len;}
void sort_all::sort_heap(int *array, int len { heap_create(array, len;for(int i=len-1;i>0;i--{ swap_i(array[0], array[i];heap_adj(array, 0, i;} } /*******************************************************/ /******************插入排序*****************************/ /*******************************************************/ void sort_all::sort_insert(int *array, int len { int i,j;int temp;for(i=1;i { temp = array[i];for(j=i;j>0 && array[j-1] > temp;j--array[j] = array[j-1];array[j] = temp;} } /********************************************************/
/*************冒泡排序***********************************/ /********************************************************/ void sort_all::sort_maopao(int *array, int len { int i,j;for(i=0;i { for(j=len-1;j>=i;j--{ if(array[j] > array[j+1] swap_i(array[j],array[j+1];} } } /**********************************************/ /**************并归排序************************/ /**********************************************/ void merge(int * array, int start, int mid, int end { int len_A = midmid;int *A = new int[len_A];int *B = new int[len_B];int i,j;for(i=0;i
A[i] = array[i +start];for(i=0;i B[i] = array[i + mid+1];i=0;j=0;int temp;int k=start;while(i { if(A[i] > B[j] { temp = A[i];i++;} else { temp = B[j];j++;} array[k++] = temp;} while(i { array[k++] = A[i++];}
while(j { array[k++] = B[j++];} } void sort_all::sort_merge(int * array, int start, int end { if(start == end return;else { int mid =(start+end/2;sort_merge(array, start, mid;sort_merge(array, mid+1, end;merge(array, start, mid, end;} } /********************快速排序******************************/ /**********************************************************/ void sort_all::sort_quick(int *array, int start, int end { int key = array[start];int i = start;int j = end;if(i>=j
return;while(i { while(i j--;array[i] = array[j];while(i = array[i] i++;array[j] = array[i];} array[i] = key;sort_quick(array, start, i-1;sort_quick(array, i+1, end;} /****************************************************/ /****************选择排序****************************/ /****************************************************/ void sort_all::sort_select(int *array, int len { int i,j;int ntemp;int key;for(i=0;i { key = array[i];
ntemp = i;for(j=i+1;j { if(array[j] array[j] ntemp = j;} swap_i(array[i], array[ntemp];} } /*****************************************/ /**************** Shell排序****************/ /*****************************************/ void sort_all::sort_shell(int *array, int len { int step = len;int i;while(step >1 { step =(step+1/2;for(i=0;i { if(array[i+step]
} ————————————————————————————————————————————————————sort_main.cpp文件————————————————— #include “sort_all.h” int main({ int input[] = {2,4,5,1,5,8,10,-2,4};int len = sizeof(input/sizeof(int;int N;sort_all instance;while(1 { instance.disp_num(;cout > N;if(N==0 break;cout
break;case 2: instance.sort_merge(input, 0, len-1;cout
break;} instance.disp_array(input, len;cout