003冒泡排序
一、算法介绍
冒泡排序是重复地遍历要排序的序列,判断相邻的两个元素的顺序是否正确,若不正确,则交换位置。重复地遍历直到没有元素需要交换,此时序列已排好序。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
二、算法分析
第一轮遍历时,从第一个元素开始,若后面的元素比当前遍历的元素小,则交换它们的位置,直到倒数第二个元素。第一轮遍历结束后,因为一定是较大元素向后移,所以最大的元素就被放到了最后一个位置。则此后的遍历地结束位置都要比上一轮前移一个位置。这样从最后一个位置开始,随着一轮遍历结束,各个位置被放上了对应大小的元素
如图所示
三、算法代码
void BubbleSort(int a[], int n)
{
int i,j,temp;
for(i=0; i<n-1; i++)
{
for(j=0; j<n-1-i; j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
运行结果