我是C的新手,我对此代码存在一些问题。
我需要将一个数组拆分成两个不同的数组,然后按照第一个数组的顺序对第二个数组进行排序。
有什么想法吗?
以下是我到目前为止的地方:
#include <stdio.h>
void main ()
{
int currentN;
int i, n;
int array[20];
printf("Enter the value of n\n");
scanf("%d", &n);
if (n%2 !=0)
{
printf("sequence would not be equ. please enter Odd \n");
printf("Please Enter even number\n");
scanf("%d", &n);
}
//add
printf("enter the numbers\n");
for (i = 0; i < n; ++i)
{
scanf("%d", &array[i]);
// scanf("%d", ¤tN);
// seq[i]= currentN;
}
n++;
//add
int *firstHalf = malloc(n/2 * sizeof(int));
if (!firstHalf)
{
/* handle error */
}
int *secondHalf = malloc(n/2 * sizeof(int));
if (!secondHalf)
{
/* handle error */
}
memcpy(firstHalf, array, n/2 * sizeof(int));
memcpy(secondHalf, array + n/2, n/2 * sizeof(int));
for (i = 0; i < n/2; i++)
{
printf( "%d\t", firstHalf[i]);
//printf( "%d\n", secondHalf[i]);
//printf( "\n************************");
}
printf("\n*********************\n");
for (i = 0; i < n/2; i++)
{
printf( "%d\t", secondHalf[i]);
}
}
答案 0 :(得分:0)
获得所需内容的一种方法:
angular.module('myApp', ['lumx']);
。struct
。struct
数组,使原始数组的前半部分存储在struct
数组元素的第一个成员中,原始数组的后半部分存储在第二个成员中struct
数组的元素。struct
数组进行排序。答案 1 :(得分:0)
只需在上一个memcpy
功能后添加此代码:
int j, temp;
for(i = 0; i < n/2; i++)
{
for( j = 0; j < n/2 - 1; j++ )
{
if( firstHalf[j] > firstHalf[j+1] )
{
temp = firstHalf[j];
firstHalf[j] = firstHalf[j+1];
firstHalf[j+1] = temp;
temp = secondHalf[j];
secondHalf[j] = secondHalf[j+1];
secondHalf[j+1] = temp;
}
}
}
我使用了基本的冒泡排序,但您可以使用任何高级排序算法。
技巧是,你在进行比较时只需要使用firstHalf
数组,但在交换时,你可以交换两个数组中的元素。