//冒泡排序是一种最基本的排序算法,操作过程是:
比较相邻的两个元素,如果前面一个比后面一个大,那么就交换位置。
对每一组相邻元素都做同样的工作。
重复这个步骤。直至有序。
第一个循环是需要比较的趟数。
第二个是每趟需要比较的元素个数。
冒泡排序的时间复杂度是O(n^2).
他是稳定的排序算法。
//要求:从文件test.txt中读取元素,并且对元素排序后写入到文件sort.txt中
程序如下:
#include<iostream>
#include<vector>#include<fstream>
#include<stdlib.h>
using namespace std;
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void BubbleSort(vector<int>&data)
{
int count=data.size();
for(int i=0;i<count;i++) //只需要循环count-1次啊,因为前面count-1个都确定,最后一个肯定确定啊
{
for(int j=0;j<count-i-1;j++)
{
if (data[j]>data[j+1])
{
swap(&data[j],&data[j+1]);
}
}
}
}
int main()
{
vector<int>data;
ifstream in("test.txt");
if(!in)
{
cout<<"file open error."<<endl;
exit(EXIT_FAILURE);
}
int tmp;
while(!in.eof())
{
in>>tmp;
data.push_back(tmp);
}
in.close();
BubbleSort(data);
ofstream out("sort.txt");
if(!out)
{
cout<<"file open error."<<endl;
exit(EXIT_FAILURE);
}
for (int i =0 ; i < data.size() ; i++)
{
out<<data[i]<<" ";
}
out.close();
return 0;
}