冒泡排序和选择排序是排序算法中比较简单的两种算法。
冒泡排序的思想是:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,针对所有的元素重复以上的步骤,这样每次参与比较的元素就越来越少,直到没有任何一对数字需要比较。对N个数字进行冒泡排序,需要进行N-1趟比较,第i趟中需要进行N-i次比较。由于冒泡排序中每趟都重复比较了很多元素,导致此算法的时间效率不是很高,其平均时间复杂度为O(n*n).
这里给出一份冒泡排序的参考代码:
//description:冒泡排序
//author:hust_luojun
//data:2014_7_22
#include <iostream>
using namespace std;
int main()
{
void bubble_sort(int arrary[],int length);
int arrary[]={13,3,76,56,86,43,76,6,34,75};
cout<<"the origin arrary is:"<<endl;
int i;
for(i=0;i<10;i++)
cout<<arrary[i]<<" ";
bubble_sort(arrary,10);
i=0;
cout<<endl;
cout<<"the sorted arrary is:"<<endl;
for(int i=0;i<10;i++)
cout<<arrary[i]<<" ";
return 0;
}
void bubble_sort(int arrary[],int length)
{
int i;
int j;
int k;
for(i=0;i<length-1;i++)
for(j=0;j<length-1-i;j++)
{
if(arrary[j]>arrary[j+1])
{
k=arrary[j];
arrary[j]=arrary[j+1];
arrary[j+1]=k;
}
}
}//description:选择法排序
//author:hust_luojun
//data:2014_7_22
#include <iostream>
using namespace std;
int main()
{
void selection_sort(int arrary[],int length);
int arrary[]={13,3,76,56,86,43,76,6,34,75};
cout<<"the origin arrary is:"<<endl;
int i;
for(i=0;i<10;i++)
cout<<arrary[i]<<" ";
selection_sort(arrary,10);
i=0;
cout<<endl;
cout<<"the sorted arrary is:"<<endl;
for(int i=0;i<10;i++)
cout<<arrary[i]<<" ";
return 0;
}
void selection_sort(int arrary[],int length)
{
int i;
int j;
int k;
int t;
for(i=0;i<length-1;i++)
{
k=arrary[i];
for(j=i+1;j<length;j++)
if(arrary[j]<k)
{
t=arrary[j];
arrary[j]=k;
k=t;
}
arrary[i]=k;
}
}
原文地址:http://blog.csdn.net/shanshui2010/article/details/38043755