冒泡排序是數組作爲參數返回給函數的一個很好例子。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void Swap(int* x,int* y){
int tmp=*x;
*x=*y;
*y=tmp;
}
//如果把一個數組當作函數參數,那麼這個數組會隱式退化成指針
//這個指針就指向了數組的首元素
// BubbleSort(int arr[])相當於BubbleSort(int* arr)
//把一個數組變成有序(升序或者降序)的數組
void BubbleSort(int arr[],int size){
//printf("hello\n");
//
//int len=sizof(arr)/sizof(arr[0]);
//printf("len=%d\n",len); //len=1
//當前這個排序函數是迫切的需要知道數組中的元素個數的,
//但是通過sizeof的方式又獲取不到。
//[0,bound] 已經排好序的空間
//[bound,size) 待排序空間
//如果篩選出一個最小的元素放到起始位置了,就可以讓bound++
//
int bound=0; //邊界
for(;bound<size;++bound){
//第一重循環需要循環若干次,每次循環篩選出當前待排序
//區間中最小的元素
int cur=size-1;
for(;cur>bound;--cur){
//這個循環在遍歷待排序區間,進行最小值的篩選
if(arr[cur]<arr[cur-1]){
//進行交換
Swap(&arr[cur],&arr[cur-1]);
}
}
}
}
int main(){
int arr[]={9,5,2,7};
int len=sizeof(arr)/sizeof(arr[0]);
BubbleSort(arr,len);
system("pause");
return 0;
}