冒泡排序就是从前至后依次比较相邻的两个数据的大小,将大的往后移动,这样经过一次完整的比较和移动,就可以将序列中最大的一个数放置到序列的最后。
算法过程:
1、比较相邻的元素,如果第一个比第二个大,就交换两个的位置。
2、从序列的开头一直到结尾一直重复这样的工作,这样一趟结束够就可以将最大的数放置到最后。
3、进行第二趟排序,但最后一个数不需要参与计较,因为它已经是最大的。
4、进行N趟这样的重复操作,整个数组有序。
代码如下
void BubbleSort(int* arr, int n)
{
int end = n;
while(end>0)
{
int i = 0;
int flag;
for(i=1; i<end; i++)
{
if(arr[i-1] > arr[i])
{
flag = 0;
Swap(&arr[i-1],&arr[i]);
flag = 1;
}
}
end--;
if(flag == 0)//如果在排序其中一趟排序完成后,数组已经有序,就结束循环。
break;
}
}