//升序,普通方式。 #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; }