C語言經典演算法練習一(氣泡排序)
阿新 • • 發佈:2018-12-14
本次練習總結:
1. 函式宣告在初次編碼時忘記,教訓一;
2. 不知道不知長度的陣列空間該如何操作,學會了動態分配,知道了malloc函式在<stdlib.h>標頭檔案中,收穫一;
3. 又忘記double型別在printf()和是scanf()中用%f還是%lf,這次加深記憶,教訓二;
4. 懂得可以用指標表示形式申請陣列空間,概念沒有特別清晰,在後面C的學習中將重點學習彌補,收穫二;
5. 因為一開始是寫的固定陣列,所以這個是多次修改後的程式碼,所以沒有走程式設計程式設計執行等的步驟,這個要重視,下次最好重寫過,不能偷懶,教訓三。
#include <stdio.h> #include <stdlib.h> double * arrReturn(double*, int);//此函式實現氣泡排序,引數為陣列和陣列長度,返回值為排好序(從小到大)的陣列 int main(void){ int n; printf("您想輸入多少個數?\n"); scanf("%d", &n ); double *arr =(double *) malloc(n * sizeof(double));//動態分配 for(int j = 0; j < n; j ++){ printf("請輸入第%d個數\n", j + 1); scanf("%lf", &arr[j]); } double *m = arrReturn(arr, n); for(int i = 0; i < n; i ++){ printf("%0.6f\n", m[i]); } return 0; } double *arrReturn(double *arr , int n){ int i; for(i = 0; i < n - 1; i++ ){//n-1個數將要交換位置 int j,temp = 0; for(j = 0; j < n - i - 1; j ++ ){//第i個數將交換n-1-i次位置 if(arr[j] > arr[j + 1]){//前一個比後一個大就交換位置,依次按從前往後的位置進行交換 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; }