冒泡排序函数

//升序,普通方式。
#include <stdio.h>
#include <string.h>
int main()
{
	int i, j, x;
	int num[] = { 5,4,3,2,1 };
	int sz;
	sz = sizeof(num) / sizeof(num[0]);
	for (i = 1; i < sz; i++)
	{
	        int flaot=1;                                                                      //定义Float.可省略,只是为了使程序执行效率更高。
		j = 0;
		for (j = 0; j < sz - i; j++)
		{
			if (num[j] > num[j + 1])
		       {
			    x = num[j + 1];
			    num[j + 1] = num[j];
			    num[j] = x; 
			    float=0;
			}

		}
		if(1==float)                                                              //break语句不能出现在IF语句中国,但是这里是for循环,所以可用。
		{
		   break;
		   }
	}
	for (i = 0; i < sz; i++)
	{
		printf("%d ", num[i]);

	}
	return 0;
}

下面介绍函数实现方式:
首先介绍两点:
1.函数传参过去的数组名,是首地址的值,而非整个数组。

2.但是在SIZEOF函数中的数组名代表整个数组,所以只有在主函数中计算过后一起传参过去实现计算。

#include <stdio.h>
#include <string.h>
void px(int num[], int sz)
{
	int i, j;
	int x;


	for (i = 1; i < sz; i++)
	{
		j = 0;
		for (j = 0; j < sz - i; j++)
		{
			if (num[j] > num[j + 1])
			{
				x = num[j + 1];
				num[j + 1] = num[j];
				num[j] = x;
			}

		}
	}
}
int main()
{
	int i, j, x;
	int num[] = { 5,4,3,2,1 };
	int sz;
	sz = sizeof(num) / sizeof(num[0]);
	px(num, sz);
	
	for (i = 0; i < sz; i++)
	{
		printf("%d ", num[i]);

	}
	return 0;
}


上一篇:CF434E Furukawa Nagisa's Tree


下一篇:冒泡排序