【数据结构 排序】冒泡排序|哨兵版|3种冒泡排序大全

【数据结构 排序】冒泡排序|哨兵版|3种冒泡排序大全,第1张

本篇博客记录数据结构冒泡排序的基本 *** 作,无聊的时候打发时间写的,防止时间长了不写写就忘没了(づ ●─● )づ

这里分成了3种,分别对应了冒泡排序初级版、一般版、哨兵版。

初级版:
//冒泡排序初始版(从小到大)
void bubblesort0(int* arr)
{
	for (int i = 1; i < arr[0]; i++)
	{
		for (int j = i + 1; j <= arr[0]; j++)
		{
			if (arr[i] > arr[j])
			{
				swap(arr + i, arr + j);
			}
		}
	}
}
一般版:(常规版)
//冒泡排序常规版
void bubblesort1(int* arr)
{
	for (int i = 1; i < arr[0]; i++)
	{
		for (int j = arr[0]; j > i; j--)
		{
			if (arr[j] < arr[j - 1])
			{
				swap(arr + j, arr + j - 1);
			}
		}
	}
}
哨兵版:(target标志,当数组完全排好序的时候自动停止循环) 
//冒泡排序哨兵版
void bubblesort2(int* arr)
{
	int target = 1;

	for (int i = 1; i < arr[0] && target; i++)
	{
		target = 0;
		for (int j = arr[0]; j > i; j--)
		{
			if (arr[j] < arr[j - 1])
			{
				swap(arr + j, arr + j - 1);
				target = 1;
			}
		}
	}
}

demo.c:

#include 

//遍历数组
void print(int* arr)
{
	for (int i = 0; i < arr[0]; i++)
	{
		printf("%d\t", arr[i + 1]);
	}

	printf("\n");
}

//交换数值
void swap(int* a, int* b)
{
	*a ^= *b ^= *a ^= *b;
}

//冒泡排序初始版(从小到大)
void bubblesort0(int* arr)
{
	for (int i = 1; i < arr[0]; i++)
	{
		for (int j = i + 1; j <= arr[0]; j++)
		{
			if (arr[i] > arr[j])
			{
				swap(arr + i, arr + j);
			}
		}
	}
}

//冒泡排序常规版
void bubblesort1(int* arr)
{
	for (int i = 1; i < arr[0]; i++)
	{
		for (int j = arr[0]; j > i; j--)
		{
			if (arr[j] < arr[j - 1])
			{
				swap(arr + j, arr + j - 1);
			}
		}
	}
}

//冒泡排序哨兵版
void bubblesort2(int* arr)
{
	int target = 1;

	for (int i = 1; i < arr[0] && target; i++)
	{
		target = 0;
		for (int j = arr[0]; j > i; j--)
		{
			if (arr[j] < arr[j - 1])
			{
				swap(arr + j, arr + j - 1);
				target = 1;
			}
		}
	}
}

int main()
{
	//初始化待排序数组(第一个元素存放数组的长度)
	int arr[11] = { 0, 25, 32, 1, 45, 23, 3, 67, 24, 4, 10 };
	arr[0] = sizeof(arr) / 4 - 1;

	bubblesort2(arr);

	print(arr);

	return 0;
}

QQ: 1757093754

欢迎交流!现在先把算法写好,暑假将更新排序原理!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1498297.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存