算法是程序员必被的一个技能,在面试中常常出现,下面总结了面试中出现的常见算法,这些算法程序员应该牢记在心中,要非常熟练。...
分类:
编程语言 时间:
2015-06-22 08:47:04
阅读次数:
129
#include
using namespace std;
#define MAXSIZE 21
typedef int SqList[MAXSIZE];
#define ElementType int
void Swap(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
}
///////////...
分类:
编程语言 时间:
2015-06-22 01:14:46
阅读次数:
162
一、希尔排序(Shell Sort)
希尔排序(Shell Sort)是一种插入排序算法,因D.L.Shell于1959年提出而得名。Shell排序又称作缩小增量排序。
二、希尔排序的基本思想
希尔排序的中心思想就是:将数据进行分组,然后对每一组数据进行排序,在每一组数据都有序之后
,就可以对所有的分组利用插入排序进行最后一次排序。这样可以显著减少交换的次数,以达到加快排序速度的...
分类:
编程语言 时间:
2015-06-19 01:31:56
阅读次数:
232
#include
using namespace std;
#define SIZE 21
typedef int Sqlist[SIZE];
void ShellInsert(Sqlist &L,int dk,int n)
{
int i,j;
for(i=dk;i<n;++i)
{
if(L[i]<L[i-dk])
{
L[0] = L[i];
...
分类:
编程语言 时间:
2015-06-18 13:34:41
阅读次数:
135
希尔排序实际上是插入排序的一种,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。时间复杂度无法准确的估计,希尔排序的基本逻辑记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。-(...
分类:
编程语言 时间:
2015-06-18 08:14:35
阅读次数:
104
插入排序 给出一下四种方法:
直接插入排序,折半插入排序,二路插入排序,希尔插入排序
代码实现:
#include
using namespace std;
#define size 21
typedef int Sqlist[size];
void SInsertSort(Sqlist &L, int n) //直接插入
{
cout << "直接插...
分类:
编程语言 时间:
2015-06-17 15:30:06
阅读次数:
140
Sort a linked list in O(n log n)
time using constant space complexity.
分析:排序算法中,堆排序、归并排序、快速排序、希尔排序的时间复杂度是nlogn,堆排序和归并排序对下标依赖性比较强,比较适合顺序表的排序,对链表处理起来比较复杂。希尔排序用的比较少。所以我选择的是快速排序,结果是正确的,但时间超出限...
分类:
其他好文 时间:
2015-06-17 11:41:17
阅读次数:
108
---恢复内容开始---从开始准备学编程就一直听算法算法。算法个毛东西?今天开始我就开始准备接触算法算法那么首先就是排序:排序大概份四种排序: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。 插入排序: 包括直接插入排序,希尔排序。 合并排序: 合并排序。...
分类:
编程语言 时间:
2015-06-16 22:44:14
阅读次数:
163
#include
#include
#include
void swap(int *a,int *b)
{
int tmp=*a;
*a=*b;
*b=tmp;
}
void insertSort(int *a,int n)
{
int tmp,i,j;
for(i=1;i0&&tmp<a[j-1];j--)//f...
分类:
编程语言 时间:
2015-06-16 16:46:01
阅读次数:
106
排序法平均时间最坏情况最好情况稳定度额外空间备注直接插入O(n2)O(n2)O(n)稳定O(1)大部分已排序时较好(简单)希尔O(nlogn)O(nlogn)与步长相关不稳定O(1)n小时较好(较复杂)冒泡O(n2)O(n2)O(n)稳定O(1)n小时较好(简单)快排O(nlogn)O(n2)O(n...
分类:
编程语言 时间:
2015-06-15 16:11:13
阅读次数:
124