/*----------------------------------------------------------------------------------------
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,即可免费获取!