c++自创排序算法之递减排序
1.递减排序性能简介
时间复杂度:O(na)
空间复杂度:O(n)
稳定性:稳定
2.递减排序思路
一个数组,如果不断把每一个元素都减一,重复若干次以后,最先被减成0的就是最小的元素,以此类推,在所有元素都被减成0以后,就可以根据每个元素被减成0的顺序完成对数组的排序。
如果有负数,要把所有数都加上一个相同的数使数组里的所有元素都是正整数。
3.递减排序代码
void dj_sort(int *a,int gs)
{
int b[gs],c[gs];
for(int i=0;i<gs;i++)
b[i]=a[i],c[i]=a[i];
int mal=0;
for(int i=0;i<gs;i++)
{
if(b[i]<=0)mal=max(mal,abs(b[i])+1);
}
for(int i=0;i<gs;i++)
b[i]+=mal;
int l=0;
while(l<gs)
{
for(int i=0;i<gs;i++)
{
b[i]--;
if(b[i]==0)a[l++]=c[i];
}
}
}