简单冒泡排序(改进版)

我们在原来的冒泡排序算法中加入一个flag标记,用于标记此趟排序数据是否发生交换,如果flag发生变化,则说明数据发生变化,如果没有变,则说明数据没有发生交换。
这个改进可以提高冒泡排序算法的时间效率,当然只是小幅提升。
代码如下:

void BubbleSort(int* arr, int left, int right)
{
    
    
	int n = right - left; //表示趟数
	bool flag = false;//用于标记此趟排序是否有交换,如有则说明数据整体未必有序,如没有则说明数据已经有序,直接退出
	for (int i = left; i < n; i++)
	{
    
    
		for (int j = left; j< n-i-1; j++)
		{
    
    
			if (arr[j] > arr[j + 1])
			{
    
    
				Swap(&arr[j], &arr[j + 1]);//这里Swap函数用于交换两个数
				flag = true;
			}
		}
		if (!flag)
		{
    
    
			break;
		}
		else {
    
    
			flag = false;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_46078890/article/details/108770330