您的位置:首页 > 其它

冒泡排序

2016-06-14 09:01 281 查看
设数组长度为n,按照从小到大排序

1:从第一个数开始,比较相邻的前后两个数字,如果前面数据大于后面数据,交换两个数据;否则继续比较

2:当从data[0]遍历到data[n-1]后,最大的数字沉在data[n-1]的位置,即数组末尾;

3:n=n-1,重复上面两步,直到n=0。

void BubbleSort1(int data[],int length)
{
for(int i = 0; i < length; i++)
{
for(int j = 1; j < length-i; j++)
{
if(data[j-1] > data[j])
{
Swap(data[j-1],data[j]);
}
}

}
}


优化1:设置flag,如果某次没有交换发生,说明排序已经完成;如果交换,设置flag=true

用k表示也要比较的次数,每次经过一次排序,最大的n沉到最后,k--,那么下一次只要比较n之前的数组,n之后的已经有序

优化2:有10个数的数组,如果经过几次排序,后边的6个数字已经有序,那么下次排序,只要从第一个开始到第四个就OK,不需要继续比较后边的6个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: