c语言中冒泡排序算法实现

/*
已知一顺序表l中的存储的数据元素的类型为整型。
顺序表中元素的值为(12,24,16,7,5,8,36,44,7,10)
 (1)定义一个算法,打印输出顺序表中所有元素的值。
 (2)定义一个算法,求L中7的个数。
 (3)定义一个算法在L中第5个元素前插入一个值为17的元素。
 (4)删除顺序表中值为8的元素。
 (5)查找顺序表中值为36的元素的位置,有36的话返回其下标+1,没有返回0。
 (6)把顺序表ls(6,0,4,12)链接到l的后面。(ls的类型和l的类型相同)
 (7)对顺序表l实现逆置。
 (8)采用冒泡排序法,对顺序表l进行排序。
(以上每种算法调用之后,均要输出顺序表的所有元素的值。即调用打印顺序表的算法。)
*/
#include<stdio.h>
#define MAXSIZE 100													//初始化一个MAXSIZE
struct sqlist{														//定义一个结构体说明一个线性表 
	int elem[MAXSIZE];												//定义一个整型的数组名为elem 
	int length;														//线性表的长度 
};																	
//存数据到线性表内 
struct sqlist l={{12,24,16,7,5,8,36,44,7,10},10};					 

struct sqlist ls={{6,0,4,12},4};
	
/*
void init_sqlist()
	{
	l.elem={12,24,16,7,5,8,36,44,7,10};
	l.length=10;
	}
*/
//输出线性表的元素 
void printf_sqlist()
	{
		int i;
		printf("\n");
		for(i=0;i<=l.length-1;i++)
			printf("%4d",l.elem[i]);
			printf("\n");
	}
	
//计算l线性表中值为7 
int  number(int x)
	{
		int i,n=0;
		for(i=0;i<=l.length-1;i++)
		if(x==l.elem[i])
		n=n+1;
		return n;
	}

//在l线性表中第5个元素前插入一个值为17的元素 
void insert_sqlist(int n,int x)
	{
		int i;
		for(i=l.length-1;i>=n-1;i--)
			l.elem[i+1]=l.elem[i];

		l.elem[n-1]=x;
		l.length++; 
}

//删除顺序表中值为8的元素 
void del_sqlist(int x)
{
	int i,j;
	for(i=0;i<=l.length-1;i++)
		if(x==l.elem[i])
			break;

	for(j=i+1;j<=l.length-1;j++)
		l.elem[j-1]=l.elem[j];
		l.length--;

}

//查找顺序表中值为36的元素位置返回下标,否者返回0 
int find_sqlist(int x)
{
	int i;
	for(i=0;i<=l.length-1;i++)
		if(l.elem[i]==x)
			break;
		if(i==l.length)
			return 0;
		else
			return i+1;
}

//把ls顺序表接l后 
void hebing()
{
	int i;
	for(i=0;i<=ls.length-1;i++)
		l.elem[i+l.length]=ls.elem[i];
	l.length=l.length+ls.length;

}

//对l表进行逆置 
void nizhi()
{
	int i,t;
	for(i=0;i<=l.length/2-1;i++)
	{
		t=l.elem[i];
		l.elem[i]=l.elem[l.length-1-i];
		l.elem[l.length-1-i]=t;

	}
}

//进行冒泡排序 
void maopao()
{
	int i,j,t;
	for(i=0;i<=l.length-1;i++)
		for(j=0;j<l.length-1-i;j++)
			if(l.elem[j]>l.elem[j+1])
				{
					t=l.elem[j];
					l.elem[j]=l.elem[j+1];
					l.elem[j+1]=t;
				}
}


main()
{
//init_sqlist();
	printf_sqlist();
	printf("7--NUM--%d\n", number(7));
	insert_sqlist(5,17);
	printf_sqlist();
	del_sqlist(8);
	printf_sqlist();
	printf("36--id--%d\n",find_sqlist(36));
	hebing();
	printf_sqlist();
	nizhi();
	printf_sqlist();
	maopao();
	printf_sqlist();
}

 

posted @   JackieDYH  阅读(19)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示