冒泡排序是我学习的最早的排序算法。它很简单:遍历文件,如果临近的两个元素的顺序不对,那么就将两者交换,重复这样的操作直到整个文件排好序。
一种实现算法:
#include <iostream> #include <stdlib.h> using namespace std; template <typename Item> void compexch(Item &A,Item &B) { if (B<A) exch(A,B); } template <typename Item> void bubble(Item a[], int l, int r) { for (int i=l;i<r;i++) { for (int j=r;j>i;j--) { compexch(a[j-1],a[j]); } } } void main() { int i; int N=10; int *a=new int[N]; int sw=1; if(sw) { for(i=0;i<N;i++) a[i]=1000*(1.0*rand()/RAND_MAX); } else { N=0; while(cin>>a[N]) N++; } for(i=0;i<N;i++) cout<<a[i]<<" "; cout<<endl; bubble(a,0,N-1); for(i=0;i<N;i++) cout<<a[i]<<" "; cout<<endl; }
执行结果:
(To Be Continued...)