C++学习之--冒泡排序

来源:互联网 发布:怎么评价蒋介石知乎 编辑:程序博客网 时间:2024/06/06 20:37

//冒泡排序是一种最基本的排序算法,操作过程是:

比较相邻的两个元素,如果前面一个比后面一个大,那么就交换位置。

对每一组相邻元素都做同样的工作。

重复这个步骤。直至有序。

第一个循环是需要比较的趟数。

第二个是每趟需要比较的元素个数。

冒泡排序的时间复杂度是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;
}
0 0