龙潭书斋 -- 303




堆二叉堆数据结构是一种数组对象,是一棵特殊的完全二叉树,分为大根堆和小根堆对于小根堆,任何一个子树的根节点都小于其左右子树,大根堆则相反在堆排序算法中,我们使用大根堆,而小根堆通常用于构造优先级队列 堆排序/* * file: main.c * author: 龙泉居士 * date: 2012-12-28 21:55 */ #include <stdio.h> #include "function/function.h" int heap_sort (int *array, int n) { if (array == NULL || n<=0) { printf ("build_heap param error"); return -1; } else if (n == 1) return 0; build_heap (array, n); int i; for (i=n-1; i>0; --i) { exch (array, 0, i); con_heap (array, 0, i); } return 0;
#读书笔记    #技术帖    #算法    #算法导论   

200x200


概述程序设计算法中有一个很常用的策略,那就是分治策略 分治策略一般递归的执行三个步骤:分解问题解决问题合并结果 合并排序就是典型的分治策略下的排序算法,有两种实现方式,分别是自顶向

#读书笔记    #技术帖    #算法    #算法导论   
概述与插入排序极其类似的还有选择排序,每次选择未排序队列中的最小元素放到未排序队列的开头并将已排序队列元素数加一 代码#include <stdio.h> int choose_sort(int *array, int n) { if (array == NULL) { printf ("sort element error\n"); return -1; } int i, j; for (i=0; i<n; ++i) { int min = array[i], minpos = i; for (j=i+1; j<n; ++j) { if (array[j] < min) { min = array[j]; minpos = j; } } array[minpos] = array[i]; array[i] = min; } return 0; } int main () { int i, n=10; int array[10]; printf ("Please input 10 numbers:\n"); for (i=0; i!=n; ++i) scanf ("%d", &a
#读书笔记    #技术帖    #算法    #算法导论   



京ICP备15018585号