C语言,数的冒泡排序

数的排序(sort)

利用数组进行冒泡排序

排序的规律有两种:一种是“升序”,从小到大;另外一种是“降序”,从大到小;

排序的方法有很多,我先说一个最基本的,最简单的排序方法—冒泡排序,顾
名思义,它就类似与冒泡一样;

冒泡排序的基本思路是:每次将相邻的两个数比较,将小的调到前面,将大的沉底,对每一对相邻的元素进行同样的操作,这样最后一个元素就是当前排序中最大的数,每执行一次,排除最后一个元素,针对剩下的元素重复以上的步骤。即;持续每次针对越来越少的元素重复上面步骤,直到没有任何一对数字需要比较。

例如:有8个数需要进行冒泡排序;

5,8 , 2,4, 3, 7,9, 1;

在这里插入图片描述

有8个数需要排序,一共需要比较7次,上面只执行了四次,下面的以此类推就可以了;

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	int a[1000];//定义一个数组,用来放需要比较的数;
	int i, j, k;
	for (i = 0; i < 8; i++)//输入n个需要比较的数,我这里是10个
	{
		cin >> a[i];
	}
	for (i = 0; i < 8-1; i++)//冒泡排序
	{
		for (j = 0; j < 8-1 - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				k = a[j];
				a[j] = a[j + 1];
				a[j + 1] = k;

			}
		}
	}
	for (i = 0; i < 8; i++)//输出已经排好序的数;
	{
		cout << a[i] << " ";
	}
	cout << "\n";
	return 0;
}

在这里插入图片描述

以上就是用冒泡排序对数进行排序,大家可以看到,这个算法是很麻烦的,
一不小心就会敲错,而且它的时间复杂度很高,在算法竞赛中很容易超时

STL里面有一个库函数,直接可以对数进行排序,比这个冒泡排序简单;

直接上代码;

7, 6, 3, 0, 4, 9, 1, 4, 6, 5,

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int a[1005];
	int i;
	for (i = 0; i < 10; i++)
	{
		cin >> a[i];
	}
	sort(a, a + 10);//这个默认升序,也可以写一个函数,使其变成降序;
	for (i = 0; i < 10; i++)
	{
		cout << a[i] << " ";
	}
	cout << "\n";
	return 0;
}

在这里插入图片描述
这里的****sort函数****,是STL里面的一个库函数,直接对数进行排序,它默认是升序;

如果需要降序,则需要写一个函数;

int fun(int a, int b)
{
return a > b;
}

完整代码如下;

7, 6, 3, 0, 4, 9, 1, 4, 6, 5,

#include<iostream>
#include<algorithm>
using namespace std;
int fun(int a, int b)
{
	return a > b;
}
int main()
{
	int a[1005];
	int i;
	for (i = 0; i < 10; i++)
	{
		cin >> a[i];
	}
	sort(a, a + 10,fun);
	for (i = 0; i < 10; i++)
	{
		cout << a[i] << " ";
	}
	cout << "\n";
	return 0;
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值