C语言基础算法 选择排序法和冒泡排序法

问题描述: 用选择法对10个整数从小到大排序。

方法一:

冒泡排序法

思路:每次从第一个数开始,依次对相邻两个数进行比较,满足条件,则交换两数的位置,否则继续和下一个数比较

代码如下:
#include<stdio.h>
int main()
{
    int a[10],i,j,temp;
    for(i=0; i<10; i++){
        scanf("%d",&a[i]);//为数组arr[10]依次输入值
    }
    for(i=0; i<9; i++)
        for(j=0; j<10-i; j++)//嵌套循环进行排序
            if(a[j] > a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
    for(i=0; i<10; i++)
    	printf("%d\n",a[i]);
    return 0;
}

程序使用双重嵌套循环,外循环控制比较次数,内循环找出每次比较的最小数,并将其往后移。

方法二:

选择排序法

思路:先在数组中寻找最小的数,交换他们的数组下标,最后再交换两个数的值。
特点:每次值只进行一次对值的交换操作。

#include<stdio.h>
int main()
{
	int arr[10],temp;
	int i,j,t=0;
	for(i=0;i<10;i++)
		scanf("%d",&arr[i]);
	for(i=0;i<9;i++)
	{
		t=i;
		for(j=i+1;j<10;j++)
			if(arr[t]>arr[j])
				t=j;
		if(t!=i)
		{
			temp=arr[i];
			arr[i]=arr[t];
			arr[t]=temp;
		}
	}
	
	for(i=0;i<10;i++)
		printf("%d\n",arr[i]);
	return 0;
}
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值