/*----------------------------------------------------------------------------------------
	
	Program Explain:冒泡排序
    Create Date:2018.2.9 by lzn

----------------------------------------------------------------------------------------*/
#include <stdio.h>

//函数声明
void swap(int array[], int i, int j);
void BubbleSortSmallToBig(int array[], int len);
void BubbleSortBigToSmall(int array[], int len);
void PrintfArray(int array[], int len);

/*********************************************************************************
* Function Name    : main主函数
* Parameter		   : NULL
* Return Value     : 0 
* Function Explain : 
* Create Date      : 2018.2.9 by lzn
**********************************************************************************/
int main(void)
{
	int array[] = {6,2,55,100,33,23,999,888,88};
	int len = sizeof(array)/sizeof(int);
	
	printf("Original array:");
	PrintfArray(array, len);
	BubbleSortBigToSmall(array, len);
	printf("Big to small array:");
	PrintfArray(array, len);
	BubbleSortSmallToBig(array, len);
	printf("Small to big array:");
	PrintfArray(array, len);
	return 0;
}

/*********************************************************************************
* Function Name    : swap,数组内元素交换
* Parameter		   : array:数组  i,j:数组下标
* Return Value     : 0 
* Function Explain : 
* Create Date      : 2018.2.9 by lzn
**********************************************************************************/
void swap(int array[], int i, int j)
{
	int temp;
	temp = array[i];
	array[i] = array[j];
	array[j] = temp;
}

/*********************************************************************************
* Function Name    : BubbleSortSmallToBig,冒泡排序(从小到大排序)
* Parameter		   : array:数组  len:数组长度
* Return Value     : 0 
* Function Explain : 时间复杂度:O(n*n)
* Create Date      : 2018.2.9 by lzn
**********************************************************************************/
void BubbleSortSmallToBig(int array[], int len)
{
	int i, j;
	
	for(i = 0; i < len; i++)
		for( j = len-1; j > i; j--)
		{
			if(array[j] < array[j-1])
			{
				swap(array, j, j-1);
			}
		}
}

/*********************************************************************************
* Function Name    : BubbleSortBigToSmall,冒泡排序(从大到小排序)
* Parameter		   : array:数组  len:数组长度
* Return Value     : 0 
* Function Explain : 时间复杂度:O(n*n)
* Create Date      : 2018.2.9 by lzn
**********************************************************************************/
void BubbleSortBigToSmall(int array[], int len)
{
	int i, j;
	
	for(i = 0; i < len; i++)
		for(j = 1; j < len; j++)
		{
			if(array[j] > array[j-1])
			{
				swap(array, j, j-1);
			}
		}
}

/*********************************************************************************
* Function Name    : PrintfArray,打印一个数组
* Parameter		   : array:数组  len:数组长度
* Return Value     : 0 
* Function Explain : 
* Create Date      : 2018.2.9 by lzn
**********************************************************************************/
void PrintfArray(int array[], int len)
{
	for(int i = 0; i < len; i++)
	{
		printf("%d ",array[i]);
	}
	printf("\n");
}

 

程序运行结果如下:
 

数据结构与算法 | 冒泡排序_算法

1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。关注微信公众号【嵌入式大杂烩】,回复1024,即可免费获取!