版权声明:本文为博主原创文章,未经允许不得转载 https://blog.csdn.net/noipBar/article/details/84562422
排序:
按照从小到大,或者从大到小的顺序,将杂乱无章的数据进行整理的过程,叫排序,排序一般在一维数组中进行。
生活中排序的例子:上体育课的时候,老师把一排同学按身高进行排序。 考试后,老师按分数从高到低对同学的成绩排名次。
冒泡排序原理和实现步骤:
方法:从前到后依次扫描数组元素,扫描一次称为一趟。
规则:每趟扫描时,数组元素前一个和后一个相比较,如果次序和要求的次序不符合,则将两个元素交换。
将5,3,4,1,6,2进行排序,第一趟比较如下图:
排序过程中每趟的排序步骤如下图所示:
冒泡排序代码实现:
#include <iostream>
using namespace std;
const int MAXN=10001;
int main()
{
int n,i,j;
float temp,a[MAXN];
cout<<"请输入排序个数:"<<endl;
cin>>n;
for (i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个数:"<<endl;
cin>>a[i];
}
for (i=n-1;i>0;i--)
{
for (j=0;j<i;j++)
{
if (a[j]>a[j+1])
{
swap(a[j],a[j+1]);//比较交换
}
}
}
for (i=0;i<n;i++) //输出
{
cout<<a[i]<<" ";
}
return 0;
}
冒泡排序总结:
冒泡排序,只涉及前后两个数的比较大小和两个数交换,所以是稳定的排序。
如果待排序的元素已经排好,只需要一趟扫描就完成,时间复杂度为O(n)
最坏的情况下,需要进行n-1趟排序,并且每次需要交换前后两个元素,时间复杂度为O()