题目:输入10个数到一维数组中,用冒泡排序将其按从小到大的次序排序后输出
要求:分别用三个函数实现数据的输入、排序和输出
冒泡排序
原理:相邻的两个数比较,较大的放到右边,每趟比较将一个数沉底(数组末端)
思路:
1)由上图可发现N个数排序,共需N-1趟,第i趟需要比较N-i次
2)bubbleSort函数中应有一个两层嵌套循环,最外层循环控制总趟数,第二层循环控制比较次数
因此有以下代码
#include <iostream>
using namespace std;
void input(int *a,int n);
void bubbleSort(int *a,int n);
void output(int *a,int n);
int main(void)
{
int a[10];
input(a,10);
bubbleSort(a,10);
output(a,10);
return 0;
}
void input(int *a,int n)
{
cout<<"Please enter 10 integers"<<endl;
for(int i=0;i<n;i++){
cin>>*(a+i);
}
}
void bubbleSort(int *a,int n)
{
int cnt;
for(cnt=1;cnt<n-1;cnt++){
for(int i=0;i<=n-cnt;i++){
if(*(a+i)>*(a+i+1)){
int t;
t=*(a+i);
*(a+i)=*(a+i+1);
*(a+i+1)=t;
}
}
}
}
void output(int *a,int n)
{
cout<<"After sorting them from smallest to largest"<<endl;
for(int i=0;i<n;i++){
cout<<*(a+i)<<' ';
}
}