算法
xiaodaokuailai
博客已搬家 欢迎访问,相互学习
展开
-
【算法】插入排序
插入排序类似于玩扑克牌时候的排序方式:首先将待排序序列分为有序集和无序集,明显初始状态下,有序集为待排序序列的第一个元素,其余的为无序集。算法代码为:#include #include void insertationSort();//插入排序 int main(int argc, const char * argv[]){ insertationSor原创 2013-04-24 20:29:36 · 947 阅读 · 0 评论 -
【算法】插入排序的递归实现
int data[10] = {5,4,3,6,7,8,56,3,234,2};//输入元素为:data需要排序的数组start需要排序的数组的起始下标end需要排序的,无序序列的首元素的下标。length数组的长度。开始时 start = 0;end = 1,因为只有0是有序的,后面9个无序的里面下标1是首元素。调用方式为: insertationSort(data,0,1,1原创 2013-05-19 15:07:50 · 6834 阅读 · 2 评论 -
【算法】快速排序
快速排序也是和归并排序一样是基于分治模式的,即将大问题划分为若干个小问题进行求解。比如这样一个数列:data[10] = {3,5,2,78,45,32,90,56,5,67}快速排序的思想是:1 先选定一个标记值,可以是集合中的任意一个元素2 将小于该标记值的元素都移动到标记值的左边,大于标记值的元素都移动到标记值的右边。然后再对左右的元素重复这个过程。以上数列原创 2013-05-01 10:25:04 · 921 阅读 · 0 评论 -
【算法】冒泡排序
为什么使用冒泡排序? 代码简单,容易理解原理:始终是相邻的两个元素进行比较,如果需要交换就进行交换,然后继续用相邻的两个元素进行比较直到,比较完最后一个元素 即比较完i-2和i-1代码:void bubbleSort(int *data,int length){ int temp; for (int i = 0; i < length-1; i ++) {原创 2013-04-29 17:20:33 · 784 阅读 · 0 评论 -
【算法】选择排序
选择排序原理:有一个数列[12,34,1,56,67,45]排序的原理是循环n-1次,每次在数列中找到一个最大值,第一次找到的最大值与data[0]交换位置,第二次找到的最大值与data[1]交换,以此类推,直到最后一个元素。以上数列使用选择排序进行排序的过程为:1 【67,34,1,56,12,45】2 【67,56,1,34,12,45】3 【67,5原创 2013-04-29 19:59:24 · 728 阅读 · 0 评论 -
【算法】归并排序
为什么使用归并排序?1 效率高,时间复杂度为 O(nlogn) 2 培养一种分而治之的思维方式归并排序就是对两个已经有序的数组进行的排序,但是一开始的时候,很可能待排序的数组是无序的。比如这样的一个数列34 56 2 45 4 789 43 222 3 567对这十个元素进行排序,因为归并排序是用来对已经排好序的两个数列进行排序的,所以需要先把这个数列原创 2013-04-29 17:10:09 · 841 阅读 · 0 评论 -
【算法】归并--C语言实现归并排序递归算法
#include #define M 5void MergeSort(int r[],int r1[],int r2[],int s,int t);void Merge(int r[],int r1[],int s,int m,int t);int main(){ int i; int r[M]; int r1[M]; int r2[M]; for(i = 0; i <原创 2010-04-18 15:30:00 · 3189 阅读 · 0 评论 -
【算法】中文分词古与今
古典中文分词系统CDWS 1983 北航 算法:最大匹配法辅助以词尾字构词纠错技术 速度:5 ~ 10字/s 切分精度 1/625 贡献:基本阐明了汉语中的歧义切分字段的类别、特征及基本的策略ABWS 山西大学 算法:两次扫描联想-回溯,用这种算法解决组合切分歧义原创 2011-04-01 21:24:00 · 703 阅读 · 0 评论 -
【算法】归并--实现归并排序非递归算法
#include #define M 5void Merge(int r[],int r1,int s,int m,int t);void MergePass(int r[],int r1[],int n,int h);void MergeSort2(int r[],int r1[],int n);int main(){ int i; int r[M]; int r1[M];原创 2010-04-18 15:28:00 · 1126 阅读 · 0 评论 -
【算法】分治
递归关键是确定终止条件: 可以只用个别浅显的例子找出条件然后再进行判断每一个递归式都可以写成这种形式 DANDC (INT P,INT Q){IF(SMALL(P,Q)){RETURN G(P,Q); //循环终止条件}ELSE{m <-- devide(p,q);return (COMBINE DANDC(P,M), DANDC(M+1,Q))}}原创 2011-04-04 21:02:00 · 476 阅读 · 0 评论 -
【算法】分治
递归关键是确定终止条件:可以只用个别浅显的例子找出条件然后再进行判断每一个递归式都可以写成这种形式DANDC (INT P,INT Q){IF(SMALL(P,Q)){RETURN G(P,Q); //循环终止条件}ELSE{m return (COMBINE DANDC(P,M), DANDC(M+1,Q))}} 比如1+2+.原创 2011-04-04 21:04:00 · 472 阅读 · 0 评论 -
【算法】冒泡排序与选择排序的递归实现
1 冒泡排序1 冒泡排序:void bubbleSort(int *data,int start,int end){ if (start < end) { int temp = 0; int length = end - start + 1; for (int i = start; i < length - 1; i ++) {原创 2013-05-19 15:09:52 · 9781 阅读 · 0 评论