算法
henryhungry
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法的C语言实现以及各个算法的时间复杂度和空间复杂度分析(冒泡排序)
排序算法作为一种重要的算法在很多方面有应用,下面用C语言来实现各种排序算法原创 2013-11-16 21:15:21 · 3635 阅读 · 0 评论 -
堆排序(参考大话数据结构)
堆排序是一种非稳定的排序,属于选择排序类,它的核心是要构建一个大顶堆或者是小顶堆,以大顶堆为例,根节点的值为最大值,交换到数组的最后,然后对1至n-1的元素继续构建一个大顶堆,再将根节点与第n-1个元素交换,如此循环,直到最后数组为有序。 首先定义要用到的结构:#define MAXSIZE 10typedef struct{ int r[MAXSIZE +原创 2013-11-21 14:56:20 · 830 阅读 · 0 评论 -
有序表的折半查找
折半查找又称二分查找,其基本思想是,在顺序存储的有序序列中要查找某个关键字,首先用有序序列的中间元素和这个关键字作比较,如果小于关键字,则在上半部分查找,如果大于关键字,则在下半部分查找,如果等于关键字,则返回。不断地重复上述步骤,直到找到要查找的关键字为止,如果所查找区域没有所查找的关键字,则查找失败,返回。 代码如下:int Binary_Search(int *a,原创 2013-12-26 19:54:17 · 2545 阅读 · 0 评论 -
快速排序
快速排序的基本思想: 在所需要排序的序列中选出一个关键字,将所有小于此关键字的数排列在该关键字左侧,所有大于该关键字的数排列在该关键字的右侧,然后再分别对较大的序列和较小的序列进行相同操作,最后使得整个序列都有序为止。 首先定义一个结构:#define MAXSIZE 9typedef struct{ int r[MAXSIZE + 1];原创 2013-12-26 14:06:33 · 597 阅读 · 0 评论 -
直接插入排序
直接插入排序的思路是这样的:假设前i个数已经排好,将第i+1个数依次和前面的数进行比较,如果array[i+1]小于array[j],则将array[i+1]插入到array[j]的前面,插入过程是这样的,将array[i+1]储存到tmp中,然后array[j]到array[i]之间的数后整体后移一位,然后将tmp中的值赋给array[j]。代码如下:void InsertSort(int原创 2013-11-16 23:39:43 · 719 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历通常有前序遍历、中序遍历和后序遍历, 前序遍历: 先访问根节点,再访问左节点,再访问右节点。 中序遍历: 先访问左节点,再访问根节点,再访问右节点。 后序遍历: 先访问左节点,再访问右节点,再访问根节点。 前、中、后序遍历的依据主要是根据根节点的原创 2013-11-12 17:10:29 · 337 阅读 · 0 评论 -
归并算法进行排序
归并算法是一种效率较高且稳定的算法,归并算法总是要将序列中的记录都扫描一遍,所以总的时间复杂度为o(nlogn),这是归并算法中最好、最坏、平均的时间性能。 递归方式的归并算法: 首先定义函数 sort(int SR[ ], int s, int t),void sort(int SR[], int s, int t){ int temp; if(SR[s原创 2013-11-24 17:48:55 · 622 阅读 · 0 评论 -
希尔排序
希尔排序的思路是先将序列以某个增量分成几个子序列,然后对这些子序列分别进行插入排序,然后待序列基本有序之后进行整个序列的插入排序,代码如下:void ShellSort(int Array[], int k){ int gap; int tmp; int j; int i; int n; for(gap = k/2; gap >=1; gap /=2) for(j = 0;原创 2013-11-17 22:51:25 · 385 阅读 · 0 评论 -
简单的选择排序
简单选择排序算法,思路是这样的,取一个中间变量min来记录最小的数的下标,第一次循环,i = 1,min的下标首先为1,然后j =2一直遍历[]到数组结束,Array[min]和Array[j]作比较,如果Array[min] > Array[j],则min = j,j再取下一个数,一直到j遍历到数组的结尾,则此时Array[min]的值为第一次遍历的最小值,Array[min]h和Array[1原创 2013-11-16 22:26:03 · 659 阅读 · 0 评论 -
堆排序—Java
package sort;public class heapSort { // 前 n个是大顶堆 static void percUp(int[] a, int n, int k){ int hole = n + 1; //在数组中排第几个输, index while(hole/2 >= 1 && k > a原创 2017-09-09 19:06:42 · 431 阅读 · 0 评论
分享