算法
kingdam578
这个作者很懒,什么都没留下…
展开
-
顺序查找 改进
/** * 顺序查找 改进 * */ int Seq_Search_Improved(int[] a, int n, int key) { int i; a[0] = key; //哨兵 i = n; while (a[i] != key) { i--; } return i; // 返回0 则说明查找失败 }原创 2012-08-28 22:16:31 · 684 阅读 · 0 评论 -
折半查找
/** * 折半查找 * * @param a : 有序数组 * @param n : 数组长度 * @param key : 待查找的关键字 */ int Binary_Search(int[] a, int n, int key) { int low = 1; int high = n; int mid; while (low <= hight) { mid = (原创 2012-08-30 22:18:41 · 384 阅读 · 0 评论 -
顺序查找
/** * 顺序查找 * * @param a : 数组 * @param n : 数组长度 * @param key : 待查找的关键字 * */ int Seq_Search(int[] a, int n, int key) { int i; for (i = 0; i < n; i++) { if (a[i] == key) r原创 2012-08-27 22:23:51 · 334 阅读 · 0 评论 -
直接插入排序
顾名思义, 直接插入排序就类似于我们打扑克牌时, 一边摸牌, 一边理牌。先拿第一张牌在手上, 再拿第二张牌时, 我们比较一下大小, 才知道是 把牌插入左边还是右边, 下面摸牌都是类似的了。 因此直接插入排序的过程为: 先将序列中的第一个记录看作是有序的子序列, 然后从第二个记录起逐个进行插入, 直至整个序列变为 按关键字递增的有序序列为止。 /** * 对顺序表L作直原创 2012-09-13 22:03:25 · 455 阅读 · 0 评论 -
归并排序(merge sort , 合并排序)
为了解决一个给定的问题, 算法需要一次或多次地递归调用其自身来解决相关的子问题。 这些算法通常采用分治策略: 将原问题划分成n个规模较小而结构与原问题相似的子问题; 递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治模式在每一层递归上都有三个步骤: 分解(Divide): 将原问题分解成一系列子问题; 解决(Conquer): 递归地解各个问题。若问题足够小,则直接求解原创 2013-01-13 13:41:34 · 637 阅读 · 0 评论 -
选择排序
/** * 简单选择排序 * */ void SelectSort(SqList *L) { int i, j, min; for (i = 1; i length; i++) { min = i; // 首先定好一个比较值, 位置为i for (j = i + 1; j length; j++) // 从j之后的数据循环查找(没有数据移动)原创 2012-09-06 21:31:10 · 324 阅读 · 0 评论 -
冒泡排序
/** * 冒泡排序 初级版 * **/ void BubbleSort0(SqList *L) { int i, j; for (i = 1; i length; i++) { for (j = i + 1; j length; j++) { if (L->r[i] > L->r[j]) { swap(L, i, j); }原创 2012-09-05 23:03:55 · 353 阅读 · 0 评论