冒泡法排序
最近在面试应届生,出了几道简单的面试题,冒泡法排序就是其中之一。很多人觉得冒泡简单,就疏忽了。网上搜了下,也流传着很多错误的写法。自己手写了一遍,也算是复习吧。C++代码如下:
#include "stdafx.h"
/************************************************************************/
/* 冒泡排序 */
/************************************************************************/
void BubbleSort(int data[], int n)
{
for (int i=0; i<n-1; i++)
{
bool exchange = false;
for (int j=0; j<n-i-1; j++)
{
if (data > data)
{
int tmp = data;
data = data;
data = tmp;
exchange = true;
}
}
if (!exchange)
break;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int data={-100, 79, -3, 0, 49, 21, 8, 200, 12341, 0};
BubbleSort(data, 10);
return 0;
}
注意两个问题:
1. 冒泡法排序比较的是相邻的两个元素,而不是头元素和之后的几个元素相比,网上一些写法错误于此,归根结底就是自己没有实际去手写一边冒泡排序,想当然了;
2. 注意循环结束的条件,并不是一定要一直比较直到程序结束,而是当一次比较过程中没有交换操作的时候,程序即可终止。
页:
[1]