准备数据结构上级考试时的练习代码,置于此以备后用!
#include<stdio.h>
#define MAX 100
//插入排序
void insertSort(int* array,int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
//获取当前要进行排序的元素array[i]
temp=array[i];
//比较已排序区的数据与当前要进行排序的数据,如果当前排序的元素较小,
//则后移已排序的元素,找到其合适的位置后插入
for(j=i;j>0&&temp<array[j-1];j--)
{
array[j]=array[j-1];
array[j-1]=temp;
}
printf("第%d趟排序:",i);
printArray(array,n);
}
}
//希尔排序
void shellSort(int* array,int n)
{
int i,j,temp;
int gap=0;
//根据n大小,确定首次排序的分组间隔大小
while(gap<=n)
{
gap=gap*3+1;
}
printf("元素总数为:%d,首次分组间隔gap=%d\n",n,gap);
//当分组间隔大于0时,对各分组的元素进行组内排序
while(gap>0)
{
printf("分组间隔gap=%d\n",gap);
//对组内元素进行直接插入排序
for(i=gap;i<n;i++)
{
//获取下一个要进行排序的组内元素索引
j=i-gap;
temp=array[i];
while((j>=0)&&(array[j]>temp))
{
//将a[j]这一元素移动到组内的下一位置
array[j+gap]=array[j];
j=j-gap;//下一个组内元素的索引
}
array[j+gap]=temp;
}
gap=(gap-1)/3;//获取下一个分组间隔
}
printArray(array,n);
}
//冒泡排序
void bobbleSort(int* array,int n)
{
int i,j,tmp;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(array[i]>array[j])
{
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
printArray(array,n);
}
void printArray(int* array,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d \t",array[i]);
}
printf("\n");
}
void main()
{
int array[MAX];
int i,len=0;
int tmpnum;
for(i=0;i<MAX;i++)
{
array[i]=0;
}
printf("please input the number for sort,end with -1\n");
do
{
scanf("%d",&tmpnum);
if(tmpnum!=-1)
{
array[len]=tmpnum;
len++;
}
}
while(tmpnum!=-1);
printArray(array,len);
//printf("冒泡排序\n");
//bobbleSort(array,len);
//printf("直接插入排序\n");
//insertSort(array,len);
printf("希尔排序\n");
shellSort (array,len);
}
分享到:
相关推荐
归并排序C语言实现
C语言插入排序代码实现
各种排序算法的C语言实现源代码,算法导论上的各种排序算法的C语言实现源代码,很全面
针对不同的排序算法,选择C语言来实现它们各自的源代码。
冒泡排序、插入排序、归并排序、快速排序、希尔排序、选择排序的C语言实现源代码。内附注释说明。
快速排序 快速排序.c 使用C语言实现的代码 快速排序.c 使用C语言实现的代码 快速排序.c 使用C语言实现的代码
冒泡排序算法选择排序算法插入排序c语言实现
利用C语言实现的插入排序算法,在gcc下编译成功,在windows下完全可以的
用C语言实现快速排序的代码,应该会有帮助。
c语言实现归并排序,递归方式实现,含详细注释
C语言实现希尔排序算法,希望对大家有帮助!
C语言数据结构实现快速排序代码,已经过调试可以直接使用。
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο...
C语言实现的堆排序算法。 提供了堆排序算法的一个接口,可以为其它功能提供功能。
C语言代码实现冒泡排序,快速排序,希尔排序,归并排序,该代码可用gcc编译器直接编译运行,经测试,结果正确。
用C语言实现插入排序的代码,应该会有帮助。
以前喜欢在网上找,现在自己写一些简单的小程序,希望对大家有用,用语言简单的实现归并排序!
工厂方法模式的C语言实现。改写自http://blog.csdn.net/sx_wpc/article/details/7645062一文的代码。
C语言实现 各种排序包括: 直接插入排序,折半插入排序,2—路插入排序和表插入排序;希尔排序和链式基数排序;起泡排序,快速排序,归并排序;简单选择排序,树形选择排序和堆排序。 通过输入不同的数据量和数据...
拓扑排序,拓扑排序C语言代码,文档内包含完整的实现C代码