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