插入排序
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数...
分类:
编程语言 时间:
2015-04-24 09:15:35
阅读次数:
158
#include void show(int arr[], int length){ for(int i=0; i<length; i++) { printf("%d ", arr[i]); } printf("\n");}void s_insert(int arr[], int length).....
分类:
编程语言 时间:
2015-04-15 11:13:25
阅读次数:
128
折半插入排序法,又称二分插入排序法,是直接插入排序法的改良版,也需要执行i-1趟插入,不同之处在于,第i趟插入,先找出第i+1个元素应该插入的的位置,假定前i个数据是已经处于有序状态。折半插入排序(binaryinsertionsort)是对插入排序算法的一种改进,由于排序算法过程中..
分类:
编程语言 时间:
2015-04-09 17:51:40
阅读次数:
143
/**
* 1.插入排序算法
* @param int[] 未排序数组
* @return
int[] 排完序数组
*
* 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,
* 本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,
* 为元素 x “腾位置”,...
分类:
编程语言 时间:
2015-04-07 19:47:58
阅读次数:
203
1、排列整个数组:
void insertsort(int array[],int num)
{
int i,j,k;
for(j = 1;j = 0;i--)
if(array...
分类:
编程语言 时间:
2015-04-05 16:05:27
阅读次数:
120
插入排序算法是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中..
分类:
编程语言 时间:
2015-03-19 18:39:13
阅读次数:
153
1.直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 1 //-----------------对顺序表L作直接插入排序算法-------------------- 2 vo...
分类:
编程语言 时间:
2015-03-17 17:30:55
阅读次数:
155
1.直接插入排序
《算法导论》P10,《数据结构》P265
向已经排好序的数组a[1..j-1]插入a[j],进行一趟循环遍历。插入排序的基本操作是在一个有序表进行查找和插入。每一趟插入排序从后往前进行比较,便于数组中元素的向后移动。
空间复杂度:O(1)(当使用swap交换时,可实现原址)
时间复杂度:(n^2)/4
即O(n^2)
2.拓展
1)折半查找排...
分类:
编程语言 时间:
2015-03-16 16:29:20
阅读次数:
204
插入排序,顾名思义其实现形式是插入.
在整个大小不一的队列中, 第一次: 从一个元素开始,将后面相邻的元素(第二个元素)提取出来,放在一个变量中暂时保存,然后和第二个元素前面的那个元素(第一个元素)做比较,如果比它大,当然就不变动位置;但如果比它小,就将前面那个元素移动到第二个元素的位置,然后将变量的元素插入放在第一个元素的位置;
第二次: 从第二个元素开始将后面相邻的元素(第三个元...
分类:
编程语言 时间:
2015-03-13 09:24:22
阅读次数:
190
算法说明:先是拿语言进行一下描述:假如是做降序排序,那么从头开始扫描每个数字,使每个数字与它前面的若干数字进行比较,直接找到小于当前数字a(当前数字以a代替)的数字b(小于a的数字以b代替)。 然后将数字a插入到数学b的位置。将数字b到数字a前一位的数字向后移动一位。 至此,排序结束。语言表述其实懂...
分类:
编程语言 时间:
2015-03-11 19:10:45
阅读次数:
142