您的位置:首页 > 移动开发 > 微信开发

小程序(三)数组排序问题1奇偶数组排序

2013-07-02 10:09 253 查看
对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。

思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void swap(int *arr_part,int n)
{
int temp;

temp = arr_part
;
arr_part
= arr_part[n+1];
arr_part[n+1] = temp;

}

int * arrange_arr(int *arr_part,int len_part,int flag) //从小到大排序
{

int m,n;

for(m=0;m<len_part-1;m++)
for(n=0;n<len_part-1-m;n++)
{
if(flag == 1)
{
if( arr_part
>arr_part[n+1])//从小到大排序
swap(arr_part,n);
}
else
{
if( arr_part
<arr_part[n+1])//从大到小排序
swap(arr_part,n);
}
}
return arr_part;
}

int main()
{

int arr[] = {2,3,4,1,44,8,12,23,19,22,57,89,11,19,25};
int *arr_result;
int * arr_odd;
int * arr_even;

int len = sizeof(arr)/sizeof(int);

arr_odd = (int *)malloc(sizeof(int)*len);//C的数组是不可以动态增长,如果你不想使用链表,可以使用指针
arr_even = (int *)malloc(sizeof(int)*len);
arr_result = (int *)malloc(sizeof(int)*len);

int k1 = 0;
int k2 = 0;
for(int i=0;i<len;i++)
{
if( arr[i]%2!=0 )
{
arr_odd[k1] = arr[i];
k1++;
}
else
{
arr_even[k2] = arr[i];
k2++;
}
}

int flag_odd = 1;
int *re_arr_odd =	arrange_arr( arr_odd, k1, flag_odd);

int flag_even = 0;
int *re_arr_even = arrange_arr(arr_even, k2, flag_even);

printf("输入数列: \n");
for(int p=0;p<len;p++)
printf("%d ",arr[p]);
printf("\n");

printf("奇数排序后的数列:");
printf("\n");
for(int p=0;p<k1;p++)
printf("%d ",re_arr_odd[p]);
printf("\n");

printf("偶数排序后的数列:");
printf("\n");

for(int p=0;p<k2;p++)
printf("%d ",re_arr_even[p]);
printf("\n");

if (k1<=k2)
{
int j = 0;
for(int i=0;i<k1;i++)
{

arr_result[j] = re_arr_odd[i];
arr_result[j+1] = re_arr_even[i];
j = j+2;
}

for(int i=0;i<(k2-k1);i++)
arr_result[2*k1 + i] = re_arr_even[k1 + i];

}
else
{
int j = 0;
for(int i=0;i<k2;i++)
{

arr_result[j] = re_arr_odd[i];
arr_result[j+1] = re_arr_even[i];
j = j+2;
}

for(int i=0;i<(k1-k2);i++)
arr_result[2*k2 + i] = re_arr_odd[k2 + i];

}
printf("\n");
printf("最终结果:\n");
for(int i=0;i<len;i++)
printf("%d ",arr_result[i]);

getchar();
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐