您的位置:首页 > 其它

冒泡排序(优化版本)

2015-04-11 11:31 211 查看
对于类似于(3,2,1,5,6,7)的序列,可以看出这个序列的后缀是已经有序的,所以在前一趟扫描后发现后缀有序,在下一次扫描时就忽略有序的后缀,而不是仅仅长度减一,这样就能避免无谓的扫描。

代码如下:

int bubble(int vec[], int lo, int hi);

void bubbleSort(int vec[], int lo, int hi)
{
while(lo + 1 < (hi = bubble(vec, lo, hi)));
}

int bubble(int vec[], int lo, int hi)
{
int last, tmp;
while(++lo < hi)
{
if(vec[lo] < vec[lo-1])
{
tmp = vec[lo];
vec[lo] = vec[lo-1];
vec[lo-1] = tmp;
last = lo;
}
}
return last;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序