MFC写的排序算法简单时间比较
来源:互联网 发布:oracle数据库加密 编辑:程序博客网 时间:2024/05/18 11:34
下载地址:http://yunpan.cn/cjftE6y6CCDQw 提取码 32d1
//部分源码
//1 头文件
#if !defined(AFX_SORTFUNCTION_H__44581B1E_90F4_4756_8080_E033C616C838__INCLUDED_)
#define AFX_SORTFUNCTION_H__44581B1E_90F4_4756_8080_E033C616C838__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class SortFunction {public:void QuickSort(int a[], int left, int right);void ShellSort(int a[], int n);void AscendingSortMaobao(int Array[], int n);void AscendingSort(int Array[], int n);SortFunction();virtual ~SortFunction();};#define SWAP(x, y) (x = (y + x) - (y = x))#endif // !defined(AFX_SORTFUNCTION_H__44581B1E_90F4_4756_8080_E033C616C838__INCLUDED_)//.cpp文件//. 插入升排序void SortFunction::AscendingSort(int Array[], int n){size_t start, end;start = GetTickCount();int i, j, length;int key; //从Array[]中取出要排序的数据int* pointer;length = n;pointer = Array;for(j = 1; j < length; j ++) //插入第二个元素时开始比较{i = j - 1;key = pointer[j];while(i >= 0 && pointer[i] > key) //将pointer[j] 与它前面的数依次比较,直到找到合适的位置{pointer[i + 1] = pointer[i]; //往后挪一个位置i--;}pointer[i + 1] = key;//插入}}//2. 冒泡升排序void SortFunction::AscendingSortMaobao(int Array[], int n){int *point1, temp;int i, j;point1 = Array;//此时point1已经有Array的内存区域,不需要再开辟for( i = 0; i < n - 1; i++){for( j = 0; j < n - 1 - i; j++){if( point1[j] > point1[j + 1] ){temp = point1[j];point1[j] = point1[j + 1];point1[j + 1] = temp;}}}}//3. 希尔排序void SortFunction::ShellSort(int a[], int n){int k = n / 2;//k值代表前文中的增量d值while (k >= 1)//当增量k值变化到0,结束循环{for (int i = 0; i < n; i++) //将数组分成k组, 然后对每组进行直接插入排序.{for (int j = i+k; j < n; j += k)//共进行 ? 趟插入{int m = j;while (m >= k && a[m] < a[m-k])//短路表达式{SWAP(a[m], a[m-k]);//比前一个小, 则与之交换m -= k;}}}k = k / 2;}}//4. 快速排序/*a[]要排序的数组 left数组第一个元素下标 right*//*right数组最后一个元素下标*///4.1 一趟快速排序 */int Partition(int a[], int left, int right){int i, j, key;i = left;j = right;key = a[left];do{//由后向前找到第一个比Key小的元素, 并与a[i]交换while (a[j] >= key && i < j){j--;}if (i < j) SWAP(a[i], a[j]);//由前向后找到第一个比Key大的元素, 并与a[j]交换while (a[i] <= key && i < j){i++;}if (i < j) SWAP(a[i], a[j]);} while (i < j);return j;}//4.2 快速排序void SortFunction::QuickSort(int a[], int left, int right){if (left >= right)return;if (left + 1 == right)//只有2个数,就进行交换,也是递归的最终目的{if(a[left] > a[right])SWAP(a[left], a[right]);return;}int j = Partition(a, left, right);QuickSort(a, left, j - 1); //递归左边QuickSort(a, j + 1, right); //递归右边}
0 0
- MFC写的排序算法简单时间比较
- 排序算法时间比较
- 排序算法时间比较
- 内排序算法的时间复杂度比较
- 各种排序算法的时间性能比较
- 排序算法简单比较
- 排序算法的分类及简单比较
- 排序问题:各种排序算法的时间复杂度 比较
- 堆排序与其他排序算法的时间效率比较
- 线性时间排序: 三种非基于比较的内部排序算法
- 简单排序算法的时间下界
- 比较排序算法的时间复杂度的下限
- 排序算法的时间复杂度比较(quick_sort;bubble_sort)
- C++实现多种排序算法的排序类,并比较几种排序算法所用时间
- 排序算法的比较~~
- 排序算法的比较
- 排序算法的比较
- 排序算法的比较
- ORA-00845: MEMORY_TARGET not supported on this system
- 关于TabActivity中子Activity有视频的旋转不重启的问题
- linux之awk用法(转)
- 利用SPSS检验数据是否符合正态分布
- Shell特殊变量
- MFC写的排序算法简单时间比较
- countPrimes
- Found 2 versions of android-support-v4.jar in the dependency list
- 获得系统时间
- HDU 1693 Eat the Trees (插头DP,闭合路径)
- 如何培养系统架构师
- 三目运算
- Freemarker表达式
- Eclipse 打包jar