int *a=(int *)malloc(n*sizeof(int));//malloc不初始化数组 int *a=(int *)calloc(n,sizeof(int));//calloc初始化数组 double *a=(double *)calloc(n,sizeof(double));
一般输入不必封装为函数
交换函数
1 2 3 4 5
void Swap(int *x,int *y){ int temp=*x; *x=*y; *y=*temp; }
交换操作在排序中很常用 除了matrix中的头文件题用不了函数封装。。
最小最大函数
仅返回最值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
int Min(int* a, int size) { int min = a[0]; for (int i = 1; i < size; i++) { if (min > a[i]) { min = a[i]; } } return min; } int Max(int* a, int size) { int max = a[0]; for (int i = 1; i < size; i++) { if (max > a[i]) { max= a[i]; } } return max; }
冒泡排序
时间复杂度:O(n^2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
void BubbleSort(int* a,int size){ int swap=0; do { swap = 0; for (int i = 0; i < n - 1; i++) { if (a[i] > a[i + 1]) { int temp = a[i + 1]; a[i + 1] = a[i]; a[i] = temp; swap = 1; } } } while (swap == 1); }
或者封装好(
1 2 3 4 5 6 7 8 9 10 11 12 13
void BubbleSort(int* a,int size){ int swap=0; do { swap = 0; for (int i = 0; i < n - 1; i++) { if (a[i] > a[i + 1]) { Swap(&a[i],&a[i+1]); } } } while (swap == 1); }
如无特别需要,以后都用封装好的Swap函数
选择排序
时间复杂度:O(n^2) 不稳定的排序*
1 2 3 4 5 6 7 8 9 10 11 12
void SelectionSort(int* a, int n) { for (int k = 0; k < n-1; k++) { int p = k; for (int i = k+1; i < n; i++) { if (a[p] > a[i]) { p=i; //仅更新索引,最后再换 } } Swap(&a[p], &a[k]); } }