冒泡排序函數

//升序,普通方式。
#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函數中的數組名錶明整個數組,因此只有在主函數中計算事後一塊兒傳參過去實現計算。ide

#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;
}
相關文章
相關標籤/搜索