排序C语言中qsort()函数复杂度O(nlogn)
#include<stdio.h>
#include<stdlib.h>
int comp(const void*a,const void*b)//用来做比较的函数。
{
return *(int*)a-*(int*)b;//b和a交换位置就会降序
}
int main(){
int a[10] = {2,4,1,5,5,3,7,4,1,5};//乱序的数组。
int i;
qsort(a,10,sizeof(int),comp);//调用qsort排序
for(i=0;i<10;i++)//输出排序后的数组
{
printf("%d",a[i]);
}
return 0;
}
遇到填空题用python直接解会快很多
排列next_permutation()函数
C语言实现全排列
#include <stdio.h>
void permutation(int k, int n, int a[]){
if(k == n-1)//递归到底层{
for(int i = 0; i < n; i ++)
printf("%d-", a[i]);
printf("\n");}
else{
for(int i = k; i < n; i ++){
int temp = a[k];
a[k] = a[i];
a[i] = temp;
permutation(k+1, n, a);//交换后递归下一层
temp = a[k]; //保证每一层递归后保持上一层的顺序
a[k] = a[i];
a[i] = temp;
} } }
int main(){
int a[100];
int n,k;
printf("取n个不同的元素,n为:");
scanf("%d", &n);
printf("元素为(元素不能重复):");
for(int i = 0; i < n; i ++){
scanf("%d",&k);
a[i] = k;
}
permutation(0, n, a);
int ll;
scanf("%d",&ll);
return 0;
}