1. 测试框架
完成功能:
- 输入数字 n,生成 n 个 0~n 的随机数
- 使用 qsort 升序排序
- 如果数据为升序则输出 1,否则为 0
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <stdbool.h>
void Random(int* arr,int n){
srand(time(NULL));
for(int i=0;i<n;++i){
arr[i] = rand()%n;
}
}
void PrintArr(int* arr,int n){
for(int i=0;i<n;++i){
printf("%d ",arr[i]);
}
printf("\n");
}
bool Ordered(int* arr,int n,bool asc){
// asc = true 表示为升序
if(NULL == arr || n < 1) return false;
if(1 == n) return true;
for(int i=0;i<n-1;++i){
if(asc){
if(arr[i] > arr[i+1]) return false;
}else{
if(arr[i] < arr[i+1]) return false;
}
}
return true;
}
int cmp(const void* a,const void* b){
return *(int*)a - *(int*)b;
}
int main(){
int n;
scanf("%d",&n);
int arr[n];
Random(arr,n);
PrintArr(arr,n);
printf("%d\n",Ordered(arr,n,true));
qsort(arr,n,sizeof(int),cmp);
PrintArr(arr,n);
printf("%d\n",Ordered(arr,n,true));
}
结果为:
30
18 8 7 9 23 18 20 29 13 16 27 9 29 23 27 10 0 12 23 15 9 12 1 25 3 15 29 0 19 19
0
0 0 1 3 7 8 9 9 9 10 12 12 13 15 15 16 18 18 19 19 20 23 23 23 25 27 27 29 29 29
1
2. 选择排序
选择排序排序思路:
- 找到数组中数据最大的数
- 把找到的最大的数和最后一个没排好序的数交换位置
- 除了后面排好的数,剩下的数继续完成上述操作
#include <stdio.h>
#