C语言冒泡排序
冒泡排序(Bubble Sort),是一种较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
比如16,3,33,14,6用冒泡排序从小到大排列
第一个元素16会一个个的和后面的数字比较,到3的时候,比较16 和3 的大小,16 比3大,所以交换16 和3 的位置,交换之后16 再和33比较,16比33 小, 不满足这个条件语句if(a[i] > a[i+1])所以不再交换位置。开始第二个元素和后面的元素比较,以此类推。。。
冒泡排序需要两次循环,外循环是要循环比较的元素次数,n个元素比较n-1次,内循环是每个元素需要向后比较的次数,第一个元素需要n-1次,第二个元素就需要(n-1)-1次,以此类推,最内层是if语句,用来比较每两个元素的大小。
#include<stdio.h>
int main(void)
{
int a[5] = {16,3,33,14,6};
int i,j;
for(j = 1;j < 5;j++)
{
for(i = 0;i < 5-j ;i++)
{
if(a[i] > a[i+1])
{
int b;
b = a[i];
a[i] = a[i+1];
a[i+1] = b;
}
}
}
printf("排序后:");
for(int k = 0; k < 5;k++)
{
printf("%d ",a[k]);
}
printf("\n");
return 0;
}