<数据结构>排序功能实现


前言

提示:本篇主要是本小白大学期间对数据结构实验的一些基本代码功能实现,希望对一同数据结构的伙伴有所帮助。

一、直接排序算法

算法思想:遍历到哪一个都需对前面的数值继续比较,可以看做数组后推
再把符合要求的数值放进存储空间。

1.代码功能实现

#define N 8//定义数组长度

void show(int a[]);
void straightsort(int a[]);
int main(void)
{
	int a[N]={50,36,66,76,95,12,25,36};
	printf("wu xu :\n");
	show(a);
	printf("straightsort:\n");
	straightsort(a);//调用直接插入排序寒素
	return 0;
}
void show(int a[])//遍历
{
	int i;
	for(i=0;i<N;i++)
		printf("%d\t",a[i]);
	putchar('\n');
}
void straightsort(int a[])
{
	int i,j,temp; 
	for(j=1;j<N;j++){
		temp = a[j];//为temp赋值
		for(i=j-1;i>=0;i--)
			if(temp<a[i])//判断大小
				a[i+1]=a[i];	//数组数值后移
			else 
				break;
		a[i+1] = temp;//将符合条件的数值赋给数组空间
		show(a);
	}
}

二、shell排序算法

shell排序算法是对直接插入算法的改进,建立于直接插入排序算法。
算法思想:
⑴对序列分组(标准:d(增量)=5)
⑵对每一组分别/交替插入排序
⑶逐渐缩小增量

1.代码功能实现

代码如下(示例):

#include<stdio.h>

#define N 10

void show(int a[]);
void shellsort(int a[]);
int main(void)
{
	int a[N]={50,36,66,76,95,12,25,36,24,8};
	printf("wu xu :\n");
	show(a);
	printf("shellsort:\n");
	shellsort(a);
	return 0;
}
void show(int a[])
{
	int i;
	for(i=0;i<N;i++)
		printf("%d\t",a[i]);
	putchar('\n');
}
void shellsort(int a[])
{
	int d;
	int i,j,temp; 
	for(d=N/2;d>0;d/=2){//d =d/2;
	for(j=d;j<N;j++){//不断循环,直到N末尾为止
		temp = a[j];//将两边靠右的中间值赋给temp;(可通过下图理解)
		for(i=j-d;i>=0;i-=d)//通过循环不断将最大值赋给temp;
			if(temp<a[i]
				a[i+d]=a[i];	
			else 
				break;
		a[i+d] = temp;//
	}
	show(a);
	}
}


总结

>提示:本篇主要是对直接排序和shell排序算法的基本功能代码实现,代码与逻辑需要具体画图连线理解,算法中主要依靠递归,不断循环判断,最后一种快速排序算法注释理解过于麻烦,便不在本篇展示了。
希望能对你理解折半查找算法带来一定的帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值