常用排序算法

来源:互联网 发布:anime studio mac 编辑:程序博客网 时间:2024/05/18 01:44
typedef int DataType;typedef struct{DataType *data;int iLength;int iAllocatedSpace;}SqList;/************************************************************************函数名:  DirectInsertSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  假设共有m个数据,已经排序的数据n(1<=n<m)个,从未排序数据中取出一个数据, 插入都已排序数据的适当位置,重复这个过程,直到n=m形参数:  返回值:                                              ************************************************************************/void DirectInsertSort(SqList& sqList){int i, j;DataType temp;for(i = 1; i < sqList.iLength; i++){j = i - 1;temp = sqList.data[i];while(j >= 0 && sqList.data[j] > temp){sqList.data[j + 1] = sqList.data[j];j--;}sqList.data[j + 1] = temp;}}/************************************************************************函数名:  BinaryInsertSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  二分法插入排序形参数:  返回值:                                              ************************************************************************/void BinaryInsertSort(SqList& sqList){int i, j;int low, high, mid;DataType temp;for(i = 1; i < sqList.iLength; i++){low = 0;high = i - 1;temp = sqList.data[i];while(high >= low){mid = (low + high) / 2;if (sqList.data[mid] < temp){low = mid + 1;}else{high = mid - 1;}}for(j = low; j < i; j++){sqList.data[j + 1] = sqList.data[j];}sqList.data[low] = temp;}}/************************************************************************函数名:  ShellSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  形参数:  返回值:                                              ************************************************************************/void ShellSort(SqList& sqList){int i, j;DataType temp;int d = sqList.iLength / 2;while(d >= 1){for(i = d; i < sqList.iLength; i++){j = i - d;temp = sqList.data[i];while(j >= 0 && sqList.data[j] > temp){sqList.data[j + d] = sqList.data[j];j = j - d;}sqList.data[j + d] = temp;}d = d / 2;}}/************************************************************************函数名:  SimpleSelectionSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  形参数:  返回值:                                              ************************************************************************/void SimpleSelectionSort(SqList& sqList){int i, j, minIndex;DataType minValue;for(i = 0; i < sqList.iLength - 1; i++){minIndex = i;minValue = sqList.data[i];for(j = i + 1; j < sqList.iLength; j++){if (minValue > sqList.data[j]){minIndex = j;}}if (minIndex != i){sqList.data[i] = sqList.data[minIndex];sqList.data[minIndex] = minValue;}}}/************************************************************************函数名:  HeapSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  形参数:  返回值:                                              ************************************************************************/void HeapSort(SqList& sqList){int i;for(i = 0; i < sqList.iLength; i++){}}/************************************************************************函数名:  BubbleSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  形参数:  返回值:                                              ************************************************************************/void BubbleSort(SqList& sqList){int i, j;DataType temp;for(i = 0; i < sqList.iLength; i++){for(j = 0; j < sqList.iLength; j++){if (sqList.data[j] > sqList.data[j + 1]){temp = sqList.data[j];sqList.data[j] = sqList.data[j + 1];sqList.data[j + 1] = temp;}}}}int Partion(DataType data[], int low, int high){int i = low, j = high;DataType temp = data[low];while(i < j){while(i < j && data[j] >= temp){j--;}data[i] = data[j];while(i < j && data[i] <= temp){i++;}data[j] = data[i];}data[i] = temp;return i;}void Qsort(DataType sqList[], int low, int high){int k;if (low < high){k = Partion(sqList, low, high);Qsort(sqList, low, k - 1);Qsort(sqList, k + 1, high);}}/************************************************************************函数名:  QuickSort作  者: 谭友亮(Charles Tan)日  期: 2013-4-12作  用:  形参数:  返回值:                                              ************************************************************************/void QuickSort(SqList& sqList){Qsort(sqList.data, 0, sqList.iLength - 1);}

原创粉丝点击