algorithm
文章平均质量分 63
fdssdfdsf
这个作者很懒,什么都没留下…
展开
-
内部排序总结 (二)交换排序
交换类排序主要有冒泡排序和快速排序,其中快速排序是对冒泡排序进行了改进。一.冒泡排序冒泡排序也有两层循环,外层循环控制循环的边界,内层循环控制将要比较的元素下标。每次都是比较两个相邻的元素,最后最大的元素会被交换到最后一个位置,如此往复,直到不再进行交换为止。#include#define TRUE 1#define FALSE 0void bubbleSort(int a原创 2012-08-24 18:38:20 · 403 阅读 · 0 评论 -
最短摘要生成
问题定义:给定一个字符串str,以及一个关键字字符串数组key,求str中包含key中所有字符串的最短子串。基本方法:双指针扫描字符串详细算法:1.使用start和end两个整数来指示扫描位置。均初始化为0。 2.对end加1,直到str[start,end]中包含所有关键字,或者end>=strlen(str)原创 2012-08-14 15:06:26 · 772 阅读 · 0 评论 -
内部排序总结(四)归并排序
一.概念归并是指将两个有序表合并为一个有序表。归并排序先将待排记录分割成一个一组,两个相邻组进行归并,得到两个一组的记录集合,再将相邻的组进行归并,如此,分割-合并,直到所有都排序好为止。代码:void merge(int src[],int res[],int start,int mid,int end){//将有序表src[start...mid]和res[mid+1...e原创 2012-08-28 09:09:53 · 646 阅读 · 0 评论 -
内部排序总结(三)选择类排序
一.简单选择排序简单选择排序在每趟中选择一个最小的数,与当前关键字进行比较。如果不相同,交换二数。如此进行len-1趟。void selectSort(int arr[],int len){///升序 int i,j,min; for(i=1;i<len-1;i++) { min=i;原创 2012-08-26 18:39:41 · 909 阅读 · 0 评论 -
内部排序总结(一)插入排序
所谓内部排序是指在内存中的排序,而外部排序则是待排数据过大以至于内存中一次性不能容纳全部记录,排序过程中需要对外存进行访问。根据所依据的原则,可以将内排分为插入排序,交换排序,选择排序,归并排序,基数排序五类。以下将对每种排序方法从算法的基本思想,时间复杂度,空间复杂度,稳定性上进行讨论。其中稳定性是指如果按照某种排序算法排序后,两个关键字相同的记录的顺序不发生变化,则这种排序算法是稳原创 2012-08-24 12:50:16 · 382 阅读 · 0 评论 -
如何判断一棵树是平衡二叉树
首先,想一下平衡二叉树的概念。平衡二叉树(AVL树)是满足下面条件的二叉树:要么是一棵空树,要么左右子树都是AVL树,并且左右子树的深度之差的绝对值不大于1。由此可知,要判断一棵树是不是AVL树,只要判断它的左右子树的深度之差。问题落到了如何求一棵树的深度上去了。下面使用递归的方法求一棵树的深度:#include#include#includetypedef struct BTr原创 2012-09-04 22:36:53 · 7677 阅读 · 2 评论 -
求中位数的O(n)算法
http://kingous.sinaapp.com/2012/03/12/median_algorithm_in_o_n/基本思想是快排,每次比较n/2(中位数的下标)与标准值的大小,然后继续快排。原创 2012-10-12 13:56:32 · 4544 阅读 · 0 评论