算法
文章平均质量分 56
iris_gril
这个作者很懒,什么都没留下…
展开
-
c++直接插入排序
/*直接插入排序: 从第二个数开始,把每个数插入到前面合适的位置,知道所有的数据插入完成为止*/#include #include using namespace std;#define N 10void PrintArr(int *pnArr, int nLen){ int i; for (i = 0; i < nLen; i++) { cout<<pnArr[原创 2013-12-31 01:48:35 · 480 阅读 · 0 评论 -
堆排序
/*最大堆定义:每个父节点中的数据项都大于或等于其子节点中的数据项。 堆排序: 1)对所有元素建立最大堆 (从最后一个节点的父节点开始向上重构最大堆) 2)取出堆顶的最大记录与数组末端的记录交换,重构最大堆。 */#include #include using namespace std;#define N 16void PrintArr(int *pnArr原创 2013-12-31 01:58:35 · 342 阅读 · 0 评论 -
直接选择排序
/*直接选择排序: 从第1个元素开始,反复n-1次:第i次从第i个到第n个元素中找到最小元素跟第i个元素互换。*/#include #include using namespace std;#define N 16void PrintArr(int *pnArr, int nLen){ int i; for (i = 0; i < nLen; i++) { co原创 2013-12-31 01:57:39 · 430 阅读 · 0 评论 -
冒泡排序
/*冒泡排序: (最大n-1轮排序) 每次循环从第1个元素开始,不停地比较相邻的元素,如果不满足排序要求,就交换相邻元素,直到所有的元素都已经排好序为止。*/#include #include using namespace std;#define N 16void PrintArr(int *pnArr, int nLen){ int i; for (i = 0; i原创 2013-12-31 01:59:17 · 380 阅读 · 0 评论 -
快速排序
/*快速排序:(分治思想: 分、治、合) 不同版本:(效率越来越高) 1)、轴值取中间元素,分割时从序列的左端l,右端r向序列中间扫描。交换逆置元素,直到l、r相交。 2)、轴值取中间元素,分割时从序列的左右两端交替检查空闲位置,将逆置元素移动到空闲位置上, 直到l、r相交,最后将轴值放到空闲位置。 3)、当快速排序的子数组小于某个长度n时,不必继续递归。最后对整个数组进原创 2013-12-31 02:02:21 · 578 阅读 · 0 评论 -
shell排序
/*Shell排序: O(nlogn)设定一个元素间隔的增量nGap,将参加排序的元素按这个间隔数nGap从第1个元素开始依次分为若干个子序列,分别对这些子序列排序。重复下去,直到间隔数减少为1。(间隔数每次除以2递减可以保证最后一次间隔数为1)*/#include #include using namespace std;#define N原创 2013-12-31 01:55:13 · 511 阅读 · 0 评论