跳转到帖子

冒泡排序的实例(以及冒泡排序的优化)

recommended_posts

发布于
  • Members

前言

题目

图片[1],冒泡排序的实例(以及冒泡排序的优化),网络安全爱好者中心-神域博客网

先附上两位朋友的冒泡解析:

By:Settingsun

最简单的排序——冒泡排序,网络安全爱好者中心-神域博客网 最简单的排序——冒泡排序,网络安全爱好者中心-神域博客网 最简单的排序——冒泡排序 Settingsun的头像,网络安全爱好者中心-神域博客网2年前118711

By:灰太狼

浅谈冒泡排序的小优化,网络安全爱好者中心-神域博客网 浅谈冒泡排序的小优化,网络安全爱好者中心-神域博客网 浅谈冒泡排序的小优化 疯狂的灰太狼的头像,网络安全爱好者中心-神域博客网2年前134616 118普通答案+解析

有什么不懂可以问我

#include <stdio.h>
void insert(int a[],int n,int num)
{     int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
	a[n] =num;
	n=n+1; //插入一个数,需给他加一
	for(int i=0;i<n;i++)  //这里不是n-1 因为这里不是数组是循环几次
	{
		for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
		{
			if(a[j]>a[j+1])  //下面就是简单的替换顺序
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
}
void printarr(int a[],int n)
{
	for(int h=0;h<n+1;h++)
	{
		printf("%d",a[h]);
		if(h<n)
		{
			printf(" ");  //这里是输入空格 如果直接输出空格的话,第一个数会有空格
		}
	 } 
}
int main()
{
	int n;
	scanf("%d",&n);
	int a[n];
	for(int h=0;h<n;h++)
	{
		scanf("%d",&a[h]);
	}
	int num;
	scanf("%d",&num);
	insert(a,n,num); //调用函数
	printarr(a,n);  //这里也是调用
	return 0;
	 
}
118优化答案加解析

这里的优化目的是增加运行速度

#include <stdio.h>
void insert(int a[],int n,int num)
{     int t; //定义一个中间变换值用来达到a[j]和a[j}+1的顺序替换
	a[n] =num;
	n=n+1; //插入一个数,需给他加一
	for(int i=0;i<n;i++)  //这里不是n-1 因为这里不是数组是循环几次
	{        int flag=1;//定义一个标识符
		for(int j=0;j<n-1;j++) //n-1 因为数组是从0开始
		{
			if(a[j]>a[j+1])  //下面就是简单的替换顺序
			{   flag=0;//改变标识符
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
        if(flag==1){ //如果标识符等于1那就不用进行循环了
        break;}
	}  
}
void printarr(int a[],int n)
{
	for(int h=0;h<n+1;h++)
	{
		printf("%d",a[h]);
		if(h<n)
		{
			printf(" ");  //这里是输入空格 如果直接输出空格的话,第一个数会有空格
		}
	 } 
}
int main()
{
	int n;
	scanf("%d",&n);
	int a[n];
	for(int h=0;h<n;h++)
	{
		scanf("%d",&a[h]);
	}
	int num;
	scanf("%d",&num);
	insert(a,n,num); //调用函数
	printarr(a,n);  //这里也是调用
	return 0;
	 
}
  • 查看数 717
  • 已创建
  • 最后回复

参与讨论

你可立刻发布并稍后注册。 如果你有帐户,立刻登录发布帖子。

游客
回帖…