//冒泡排序时间复杂度为O(n²)
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
const int N=10;
int a[N]={3,4,1,5,2};//这里的a数组是一个例子,里面的元素也可以自定义
int solution(int b)
{
for(int i=0;i<N;i++)
if(a[i]!=0)
b++;
return b;
}
int fin=solution(0);//使用fin和y代替solution(0)的值,因为不能改动函数的结果
int y=solution(0);
int main(int argc,char**argv)
{
while(fin--!=1)//为了减少每次遍历需要对比的元素的数量,每次将比较得到的值最大的数放在最后,每次遍历的元素量-1,这样就可以不用比较整段序列,因为最后两个元素一定是"前一个数比后一个数小"
{
for(int i=0;i<fin;i++)
{
if(a[i]>a[i+1]&&i!=fin)//每一次遍历比较前一个数是否大于后一个数(每次遍历到倒数第二个数截止)
{
a[i]=a[i+1]+a[i];//两数交换
a[i+1]=a[i]-a[i+1];
a[i]=a[i]-a[i+1];
}
}
}
for(int i=0;i<y;i++)//这里不使用solution(0)是因为如果用这个函数来作为临界条件,这个函数就会被再计算一次,不如直接用y代替solution(0)的值。
{
printf("%d",a[i]);
}
return 0;
}
C++实现冒泡排序
于 2022-08-12 12:32:15 首次发布