这是我对这个问题的尝试:
#include "stdafx.h"
#include <iostream>
using namespace std;
void bubble_sorting(int a1[]);
int _tmain(int argc, _TCHAR* argv[])
{
int size=10;
int data[100]={11, 13, 15, 17, 19, 20, 18, 16, 14, 12};
int min, max, avg, sum;
// cout<<"Enter the array size:"<<endl;
// cin>>size;
for(int i1=0;i1<size;i1++)
{
// cin>>data[i1];
// data[i1]=rand();
if(i1==0)
{
min=data[i1];
max=data[i1];
sum=data[i1];
}
else
{
if(data[i1]<min)min=data[i1];
if(data[i1]>max)max=data[i1];
sum=sum+data[i1];
}
}
cout<<"The Min number is:"<<min<<endl;
cout<<"The Max number is:"<<max<<endl;
cout<<"The average number is:"<<sum/size<<endl;
cout<<"The sum number is:"<<sum<<endl;
bubble_sorting(data);
return 0;
}
void bubble_sorting(int a1[])
{
int i2;
int t1;
for(int i1=0;i1<10;i1++)
{
i2=1;
for(i2=1;i2<10;i2++)
{
if(a1[i2]<a1[i2-1])
{
t1=a1[i2];
a1[i2]=a1[i2-1];
a1[i2-1]=t1;
}
}
}
cout<<"The data after sorting is:"<<endl;
for(int i1=0;i1<10;i1++)
{
cout<<a1[i1]<<" ";
}
cout<<endl;
}
构建冒泡排序的最佳方法是什么?
答案 0 :(得分:1)
既然你已经在问题的前两部分做了一个公平的拳头,即实施统计数据和冒泡排序,这里有一些帮助第三部分:
get
/ set
方法将这些数据公开为属性。vector
其他小问题
sum, avg, min, max
),而不是在循环中的分支中。vector
,大小是集合的固有属性。int
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
class BubbleSorter
{
public:
BubbleSorter(const vector<int>& unsortedNumbers)
: _min(INT_MAX), _max(INT_MIN), _sum(0)
{
_numbers = unsortedNumbers;
calculateStats();
}
int getMin()
{
return _min;
}
int getMax()
{
return _max;
}
int getSum()
{
return _sum;
}
double getAvg()
{
return _avg;
}
const vector<int>& getNumbers()
{
return _numbers;
}
void bubbleSort()
{
int n = _numbers.size();
bool swapped;
do
{
swapped = false;
for(vector<int>::size_type i = 1; i < n; i++)
{
if(_numbers[i] < _numbers[i-1])
{
int t1=_numbers[i];
_numbers[i]=_numbers[i-1];
_numbers[i-1]=t1;
swapped = true;
}
}
} while (swapped);
}
private:
vector<int> _numbers;
int _min, _max, _sum;
double _avg; // not int!
void calculateStats()
{
for(vector<int>::size_type i = 0; i < _numbers.size(); i++)
{
if(_numbers[i] < _min)
_min = _numbers[i];
if(_numbers[i] > _max)
_max=_numbers[i];
_sum = _sum + _numbers[i];
}
_avg = (double)_sum/_numbers.size();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
int data[] = {11, 13, 15, 17, 19, 20, 18, 16, 14, 12};
vector<int> unsorted(begin(data), end(data));
BubbleSorter sorter(unsorted);
cout << "The Min number is:" << sorter.getMin() << endl;
cout << "The Max number is:" << sorter.getMax() << endl;
cout << "The average number is:"<< sorter.getAvg() <<endl;
cout << "The sum of numbers is:" << sorter.getSum() <<endl;
sorter.bubbleSort();
cout<<"The data after sorting is:"<<endl;
vector<int> sorted = sorter.getNumbers();
for(int i=0; i < sorted.size(); i++)
{
cout << sorted[i] << " ";
}
cout << endl;
return 0;
}