數組排序是我們經常遇到的筆試題目,給大家盤一下這題到底想考察什么?
// 考題如下
void main()
{int arr[4] = {26,28,24,11};// 請實現一個sortArray函數,對數組arr進行從小到大排序
}
考點1:數組做函數參數如何傳遞參?
// 數組做函數形參的時候,如果在形參中定義int arr[4]語句,
// c/c++編譯器 會做優化,技術推演如下
// int arr[4] --> int arr[] --> int *arr
// 總結:當數組當做函數參數的話的時候會退化為指針,函數調用的時候,把數組首地址和有效數據長度傳給被調用函數才是最正確的做法
// 正確答案有三種寫法
void sortArray(int arr[4], int num)
void sortArray(int arr[], int num)
void sortArray(int *arr, int num)// 強烈推薦這個寫法,可讀性最佳
void sortArray(int arr[], int num)
考點2:排序的邏輯實現?
排序方法有很多,本答案采用經典的冒泡排序法,排序過程如下所示
#include "stdlib.h"
#include "string.h"
#include "stdio.h"// 冒泡法代碼實現
void sortArray(int arr[], int num)
{for (int i = 0; i < num - 1; i++) {for (int j = 0; j < num - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交換arr[j]和arr[j+1]int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}// 打印一下排序后的結果,驗證我們的代碼
void printfArray(int arr[], int num)
{for (int i=0; i<num; i++){printf("%d ", arr[i]);}
}int main() {int arr[4] = {26,28,24,11};;sortArray(arr, 4);printfArray(arr, 4);return 0;
}
程序運行輸出結果:
11 24 26 28
歡迎大家關注我的同名地球號,你們的認同是我寫作的最大動力!