C语言:创建一个含有10个元素的数组,乱序输入元素后升序输出(冒泡排序)(vs)

 一,问题:从键盘上输入十个元素,并对其排序;

 二,思考:十个元素的排序可以简化成“两数排序”;

       (1)对于“两数交换”,我们往往会加入第三变量来将两数进行数据交换;

        如:例子 

int a=3,b=6;
//为了输出时是a=6,b=3,则:
int temp=0;
temp=a;//交换后:a=0,temp=3;
a=b;//交换后:a=6,b=0;
b=temp;//交换后:temp=0,b=3;
printf("a=%d,b=%d",a,b);

      (2)而排序则只用加上一个比较就行,“if语句”:(这是升序的写法)

int a=6,b=3;
int temp=0;
if(a>b)
{
    temp=a;
    a=b;
    b=temp;
}
printf("max=%d",b);

      三,实现 

        (1)则同理的,实现“十数排序”也就可以通过for循环来实现了;

       

/*外部控制比较的趟数,趟数要比数组长度少1,因为每一趟都会选出一个大的数并且定序,到倒数第二次比完后,自动出最后一个,所以趟数要少1*/
for (int i = 0; i < 9; i++)
	{
		for (int j = 0; j < 9 - i; j++)//内部循环控制一趟里面“两数排序”的次数,每一趟都会产生一个最大数并从末尾往前定序                          	 
        {
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

        (2)接下来接将数组正序输出即可

    printf("排序后:");
	for (int k2 = 0; k2 < 10; k2++)
	{
		printf("%d ", arr[k2]);
	}

四,代码加运行

#include<stdio.h>
int main()
{
	int arr[10]={0};
	printf("请输入10个数字:\n");
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d", &arr[i]);
	}
	printf("排序前:");
	for (int k1 = 0; k1 < 10; k1++)
	{
		printf("%d ", arr[k1]);
	}
	printf("\n");
	for (int i = 0; i < 9; i++)
	{
		for (int j = 0; j < 9 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	printf("排序后:");
	for (int k2 = 0; k2 < 10; k2++)
	{
		printf("%d ", arr[k2]);
	}
	return 0;
}

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值