引言:
插入排序作为最简单易于理解的排序算法,基本实现比较简单。本文详细介绍直接插入排序,并给出实现,简单的介绍折半插入排序,并给出2-路插入排序和表插入排序两种插入排序,但并未给出具体实现。
一、直接插入排序
直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。
算法描述:
步骤1、将待排序的一组记录中的第...
分类:
其他好文 时间:
2014-09-06 22:34:07
阅读次数:
257
二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效...
分类:
编程语言 时间:
2014-09-04 18:45:49
阅读次数:
234
插入排序,归并排序,快排,冒泡,选择排序算法源码;折半搜索;判断链表是否有环;BST树的数量,二叉树的前中后续遍历;数字反转;判断相同树;排列、组合等源码;
分类:
其他好文 时间:
2014-09-04 16:48:39
阅读次数:
269
最近整理了下以前的资料。有的算法没有实现,嘿嘿,以后再补吧!
/**
*排序算法的分类如下:
*1.插入排序(直接插入排序、折半插入排序、希尔排序);
*2.交换排序(冒泡泡排序、快速排序);
*3.选择排序(直接选择排序、堆排序);
*4.归并排序;
*
关于排序方法的选择:
*(1..
分类:
编程语言 时间:
2014-09-03 15:06:27
阅读次数:
262
题目链接:http://poj.org/problem?id=2785思路: 朴素的枚举算法时间复杂度到了O(n^4),肯定会超时,这里我们用到了折半枚举的方法~ 原理就是先算前两个数组的各个元素进行枚举的和,排序后,然后再枚举后面两个数组各个元素的和,是这两块的和为0,而这部操作可以用到二分搜索....
分类:
其他好文 时间:
2014-08-30 11:12:19
阅读次数:
229
基本思想 折半插入排序是对直接插入排序的简单改进,对于直接插入排序而言,当第i-1趟需要将第i个元素插入前面的0~i-1个元素序列中时,总是需要从i-1个元素开始,逐个比较每个元素,直到找到它的位置。这显然没有利用前面0~i-1个元素已经有序这个特点,而折半插入排序则改进了这一点。 对于折半插入排序而言,当需要插入第i个元素时,它不会逐个进行比较每个元素,而是: (1)计算0~i-1索引的中...
分类:
其他好文 时间:
2014-08-29 20:10:18
阅读次数:
180
排序常用的算法有:插入算法(直接插入算法、折半插入算法、希尔算法)、选择算法(简单选择算法、堆排序算法)、快速算法(冒泡排序、快速排序算法)以下程序给出了各种算法的实现,其接口为voidsort(int*array,intlen),每个文件实现一个算法,最后和main.c文件编译实现。1、直..
分类:
其他好文 时间:
2014-08-22 18:12:10
阅读次数:
273
1、折半查找 1 // 递归算法 2 int BinarySearch(int item, Node *elem, int left, int right) 3 { 4 int mid = -1; 5 if(left item)10 mid = Binary...
分类:
其他好文 时间:
2014-08-14 23:06:56
阅读次数:
241
自己实现了二分查找的循环实现和递归实现
说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法。虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算。
要求传入的表是有序的。
二分查找的过程可用二叉树描述,把当前区间的中点位置上的元素作为根,左子表和右子表中的元素分别作为根的左子树和右子树,由此得到二叉树。
此树称为描述折半查找的判定树或...
分类:
其他好文 时间:
2014-08-14 16:43:58
阅读次数:
257
import java.util.Arrays;/* * 二分查找 */public class BinarySearch { /* * while循环 */ public static int binarySearch(int[] ls, int su) { ...
分类:
其他好文 时间:
2014-08-12 00:30:13
阅读次数:
186