1.基数排序
将所有数据从左向右,依次按照低位优先,全部进入到桶内,再从桶内取出
时间复杂度:O(dn) 空间复杂度:O(dn)
稳定性:稳定
void Get_Figure_Max(int *arr,int len) { int max = arr[0]; for(int i=1; imax) { max = arr[i]; } } int count=0; while(max!=0) { count++; max/=10; } return count; } //获取过去值n的index这个位的值是多少 int Get_Num(int n,int index) { for(int i=0;i 2.归并排序
一开始将所有的数据看成单独的个体,接着依次融合,直到所有的数据融合到一组,则停止
时间复杂度:O(nlog2 n) 空间复杂度:O(nlog2 n)
稳定性:稳定
L1
L1=H1 左边组值仅有一个(ok)
L1>H1 左边组值一个都没用(error)
//根据传进来的gap进行几几合并 static void Merge(int *arr,int len,int gap) { //因为数据本身空间不够用,所以要申请一个和原数组等长的动态内存 int *brr=(int *)malloc(sizeof(int)*len); assert(brr!=NULL); int L1=0; int H1=L1+gap-1; int L2=H1+1; int H2=(L2+gap-1欢迎分享,转载请注明来源:内存溢出
评论列表(0条)