根据模3的结果给数组排序

题意:给一个数组,,按照模3的结果进行排序(如果模3结果一样顺序可以随意),尽量节省空间,时间。

这个问题下午逛群看到的。

#include <stdio.h>int main(){ int num[] = {1,3,5,33,7,4};int n = 6;for(int i = 0;i < 6;i ++)printf("%d ",num[i]%3);puts("");int c1,c2,c0;//c0 为从左起最后一个余数为0后一个元素的位置//c2 为从右起第一个余数为2前一个元素的位置//c1 用于中间元素扫描 c0 = 0,c2 = n – 1;//确定c0,c2的位置 while(c0 < n && num[c0]%3 == 0)c0++; while(c2 >= 0 && num[c2]%3 == 2)c2–;//c1为c0的下一个位置 c1 = c0; while(c0 < c2 && c1 <= c2) {if(num[c1]%3 == 0){swap(num[c0],num[c1]);c0++;}if(num[c1]%3 == 2){swap(num[c2],num[c1]);c2–;}if(num[c1]%3 == 1)c1++; } for(int i = 0;i < n;i ++)printf("%d ",num[i]%3);return 0;}

有多少和我一样,坐在不足平米的空间里,

根据模3的结果给数组排序

相关文章:

你感兴趣的文章:

标签云: