![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Non-professial
愿意为之付出时间和精力的才叫兴趣。
展开
-
直接插入排序
#include #include #define MAX 200 int R[MAX]; //直接插入排序算法 void Insert_Order(int n) { int i,j; for(i=2;i<=n;i++) { if(R[i]<R[i-1]) { R[0]=R[i]; j=i-1; do{ R[j+1]=R[j]; j--;原创 2016-04-12 12:47:57 · 256 阅读 · 0 评论 -
堆排序
#include #define MAX 255 //堆排序学习 int R[MAX]; void Heapify(int s,int m) { //调整堆 int j,temp; temp=R[s]; j=2*s; while(j<=m) { if(jR[j+1]) j++; if(temp<R[j]) break; R[s]=R[j]; s=j; j=j原创 2016-04-23 17:22:24 · 252 阅读 · 0 评论 -
二项式系数递归
二项式系数递归 这个算法的结果是:给出n的值和k的值,根据公式算出二项式系数值。 算法目的:练习使用递归算法 那么什么是递归呢? 在一个算法中,如果有直接调用自身或间接调用自身的过程,就是一个递归算法。 递归步骤: 1>对应于某些参数求值的一个或多个终止条件。 2>一个递归步骤。它根据先前某次值求当前值。递归步骤最终导致终止条件。 举个例子: 幂函原创 2016-05-10 21:03:11 · 4735 阅读 · 0 评论 -
直接选择排序
直接选择排序: 基本思想:把一个无序集中的最小值选择出来放到有序集中 C语言代码: #include #define MAX 225 int R[MAX]; //直接选择排序 void Select_Sort(int n) { int i,j,k; for(i=1;i<n;i++) { k=i; for(j=i+1;j<=n;j++) { if(R[j]<R[k])原创 2016-04-14 16:23:44 · 444 阅读 · 0 评论 -
快速排序
快速排序:是冒泡排序的一种改进 主要思想:找到一个基准,从后往前找比基准小的,都将它放到左边,从前往后找比基准大的都放到右边,这样就将数组分为两部分,并且左边的都比右边的大,然后进行递归操作。 C语言代码: #include #define MAX 225 int R[MAX]; //快速排序,递归函数 int Partition(int i,int j) { int privot=R[原创 2016-04-14 10:04:04 · 380 阅读 · 0 评论 -
二叉搜索树操作
本文学习的是:二叉搜索(排序)树的普通操作 包括:插入,删除,查找,前序遍历,中序遍历,后序遍历,树的最大深度,最小深度,最大值,最小值和节点个数。 首先需要清楚二叉搜索树的定义: 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、原创 2016-04-26 12:58:00 · 1184 阅读 · 0 评论 -
希尔排序
希尔排序属于插入排序的一种。 基本思想:先将整个数组分组,然后分别插入. #include #define MAX 250 int R[MAX]; //某一确定增量d的希尔排序 void Shell_Pass(int d,int n) { int i,j; for(i=d+1;i<=n;i++) { if(R[i]<R[i-d]) { R[0]=R[i];原创 2016-04-13 12:52:05 · 393 阅读 · 1 评论 -
二分法查找
#include #include //二分法查找 int binary_search(int* array,int n,int key) { int low=0; int high=n-1; int mid; if(high < low) return -1; while(low <= high) { mid=low+((high-low)>>1); if(ar原创 2016-04-08 18:39:06 · 245 阅读 · 0 评论 -
冒泡排序
#include #include using namespace std; //冒泡排序,从大到小 void Bulldle(int* array,int num) { int i,j,temp; for(i=0;i<num-1;i++) { for(j=i+1;j<num;j++) { if(array[i]<array[j]) { temp = arr原创 2016-04-08 17:09:31 · 263 阅读 · 0 评论 -
归并排序
#include #include #define MAX 255 //自顶向下分治法 归并排序 int R[MAX]; void Merge(int low,int mid,int high) { int i=low,j=mid+1,p=0; int *R1; R1=(int *)malloc((high-low+1)*sizeof(int)); if(!R1) { puts(原创 2016-04-24 22:16:36 · 246 阅读 · 0 评论