希尔排序(缩小增量排序) 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基 ...
分类:
编程语言 时间:
2017-04-22 17:40:17
阅读次数:
213
折半插入排序 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,所谓排序算法过程,就是不断的依次将元素插入前面已排好序的序列中。 在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],末元素设置为a[high],则轮比较时 ...
分类:
编程语言 时间:
2017-04-22 17:37:17
阅读次数:
153
插入排序的基本方法是:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。 折半插入排序是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采 ...
分类:
编程语言 时间:
2017-04-16 23:58:52
阅读次数:
388
温习《数据结构C语言版》,看到排序算法,感觉看不懂。 写到代码实现下,花费了很久才搞出来。 实现的跟书本上的有点不一样哦,不喜勿喷。 参考文章: http://blog.csdn.net/hguisu/article/details/7776068 ...
分类:
编程语言 时间:
2017-04-15 18:25:34
阅读次数:
210
基本过程: 每次将待排元素和已经排序好的序列进行比较,按照大小顺序插入进去,重新构造一个新的有序序列。 插入排序算法有种递归的思想在里面,它由N-1趟排序组成。初始时,只考虑数组下标0处的元素,只有一个元素,显然是有序的。 然后第一趟 对下标 1 处的元素进行排序,保证数组[0,1]上的元素有序; ...
分类:
编程语言 时间:
2017-04-07 14:40:58
阅读次数:
152
#include<stdio.h>
voidprintk(intarray[],intlen)
{
intm;
for(m=0;m<len;m++)
{
printf("%d",array[m]);
printf("\n");
}
//printf("\n");
}
voidswap(intarray[],inti,intj)
{
inttemp=array[i];
array[i]=array[j];
array[j]=temp;
}
voidsort(intarray[],i..
分类:
编程语言 时间:
2017-04-04 18:02:41
阅读次数:
127
1.插入排序 插入排序是最简单的排序算法之一,由N-1趟排序组成,必须得保证位置0到p处的元素都是已排序状态。 具体实现的代码如下: sort()中实现了插入排序。 其原理可以用以下一张图片来说明: 以上便实现了插入排序算法。时间复杂度为O(N)。 ...
分类:
编程语言 时间:
2017-04-02 00:05:39
阅读次数:
165
算法,我在路上,将自己了解的算法内容全部梳理一遍! 今天介绍简单点的,插入排序。 首先,什么是插入排序,这个维基百科上有。个人的理解,就是将一个数插入到一个已经排好序的数列当中某个合适的位置,使得增加了一个元素的新的数列依然是有序的。比如,当前有一个待排序的数组A,我们可以认为这个数组是由两部分组成 ...
分类:
编程语言 时间:
2017-03-30 00:07:44
阅读次数:
229
算法思路(已升序为例): key=A[j];保存需要的比较值,while循环中,A[i]>key,当前key值的前一个值如果大于key值,就把A[i]的值后移一位,此时后移的位覆盖了key,然后i--,又循环重复,一直到循环结束,循环结束时,从小到大排列,但是此时由于之前i--的原因,跳出循环之后, ...
分类:
编程语言 时间:
2017-03-19 22:30:46
阅读次数:
187