冒泡排序
一、基本思想
设有n个待排记录,a[n]。
第一趟排序:将a[0]到a[n-1]中最大的记录换到序列最后(即a[n-1]位置),
一趟排序完成后,a[n-1]为最大数
第二趟排序:将a[0]到a[n-2]中最大的记录换到序列最后(即a[n-2]位置),
一趟排序完成后,a[n-2]为最大数
...
最后一趟完成后,排序完成。
对于n个记录的待排序列,最多排n-1趟就把所有记录排好。在某一趟排序中,
如果没有发生相邻记录交换,则在改趟之前以达到排序的目的。
二、算法设计
void bubblesort(int a[],int n)
{
int bound,exchange=n-1;
//是否进行交换记录exchange,第一趟排序区间a[0]~a[n-1]
while(exchange!=0)
{
bound=exchange;
exchange=0;
//while循环条件是,当满足判定条件时,将while中语句执行一遍,
//然后在判断是否满足判定条件
for(int i=0;i<bound;i++)
{
if(a[i]>a[i+1])//当满足条件是,交换记录
{
int temp=a[i];
a[i]=a[i+1];
a[i+1]=a[i];
}
}
}
}