冒泡排序是排序算法里基本上算是最简单的算法了!不过复杂度也很高O(n
2);
基本思想就是在在每次冒泡排序过程中让第一个记录和第二个记录比较若为逆序则交换;否则不动;然后是第二个和第三个记录,以此类推;这样第几次比较完成后:最大的记录(若结果要求为递增)则到达最后;在第 i 趟排序时后 n-i 个元素已经完成排序;这样进行到第n次时就排序结束了!
使用双重循环来实现:第一层循环表示要排序的次数和第 i 大的个元素在进行排序;第二层循环表示在比较的次数和实现他的位置调换;
实现:
#include<iostream>
#define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t))
using namespace std;
const int N=10;
void sort(int b[],int count);
int main()
{
int a[N];
cout<<endl
<<"please input the "<<N<<"numbers:"<<endl;
for (int i=0;i<N;i++)
cin>>a[i];
cout<<endl
<<"the original numbers you have inputed are: "<<endl;
for (int i=0;i<N;i++)
cout<<" "<<a[i];
cout<<endl
<<"After sorting the numbers ,the numbers are:"<<endl;
sort(a,N);
return 0;
}
void sort(int b[],int count)
{
int t,tempt;
for (int i=0;i<count;i++)
{
t=count-i-1;
for (int j=0;j<t;j++)
{
if (b[j]>b[j+1])
swap(b[j],b[j+1],tempt);
}
}
for (int i=0;i<N;i++)
cout<<" "<<b[i];
}
#define swap(x,y,t)((t)=(x),(x)=(y),(y)=(t))
using namespace std;
const int N=10;
void sort(int b[],int count);
int main()
{
int a[N];
cout<<endl
<<"please input the "<<N<<"numbers:"<<endl;
for (int i=0;i<N;i++)
cin>>a[i];
cout<<endl
<<"the original numbers you have inputed are: "<<endl;
for (int i=0;i<N;i++)
cout<<" "<<a[i];
cout<<endl
<<"After sorting the numbers ,the numbers are:"<<endl;
sort(a,N);
return 0;
}
void sort(int b[],int count)
{
int t,tempt;
for (int i=0;i<count;i++)
{
t=count-i-1;
for (int j=0;j<t;j++)
{
if (b[j]>b[j+1])
swap(b[j],b[j+1],tempt);
}
}
for (int i=0;i<N;i++)
cout<<" "<<b[i];
}
注:代码为转载!!
转载于:https://blog.51cto.com/hanhaiyixin/235348