在这种情况下,如何在c中打印距离原点最近的2D点? #包括 #包括 无效合并_排序(int a[],int n) { int*tmp_数组=malloc(sizeof(int)*n); 内部_msort(a、n、tmp_阵列); 自由(tmp_阵列); } 无效内部\u msort(int a[],int n,int helper\u数组[]) { int left=n/2,right=n–left; if(n
您的在这种情况下,如何在c中打印距离原点最近的2D点? #包括 #包括 无效合并_排序(int a[],int n) { int*tmp_数组=malloc(sizeof(int)*n); 内部_msort(a、n、tmp_阵列); 自由(tmp_阵列); } 无效内部\u msort(int a[],int n,int helper\u数组[]) { int left=n/2,right=n–left; if(n,c,algorithm,C,Algorithm,您的merge\u sort函数还必须对相应的索引进行排序,并返回排序后的索引数组。类似于: #include <stdio.h> #include <stdlib.h> void merge_sort(int a[], int n) { int *tmp_array = malloc(sizeof(int) * n); internal_msort(a, n, tmp_array); free(tmp_array); } void internal_msort(int
merge\u sort
函数还必须对相应的索引进行排序,并返回排序后的索引数组。类似于:
#include <stdio.h>
#include <stdlib.h>
void merge_sort(int a[], int n)
{
int *tmp_array = malloc(sizeof(int) * n);
internal_msort(a, n, tmp_array);
free(tmp_array);
}
void internal_msort(int a[], int n, int helper_array[])
{
int left = n / 2, right = n – left;
if (n < 2)
return;
internal_msort(a, left, helper_array);
internal_msort(a + left, right, helper_array);
merge(a, left, a + left, right, helper_array);
memcpy(a, helper_array, n * sizeof(int));
}
int main()
{
int N;
printf("Enter number of points: ");
scanf("%d",&N);
printf("\n");
int points[N][2];
for(int i=0; i<N; i++)
{
printf("Enter point: ");
scanf("%d, %d",&points[i][1],&points[i][2]);
printf("\n");
}
int squares_of_distances_array[N];
for(int j=0; j<N; j++)
{
int squares_of_distances_array[j] = (points[j][1]*points[j][1]) + (points[j][1]*points[j][1]);
}
merge_sort(squares_of_distances_array[], int N);
.
.
.
返回的数组如下所示
merge_sort(squares_of_distances_array[], squares_of_distances_indices[], int N);
然后使用排序后的索引数组打印坐标。您可以创建如下结构
squares_of_distances_indices = {1,0,2}
和一个结构指针数组。然后分配和填充结构。然后根据其相应的dist属性对结构的指针进行排序。然后,您将根据其与原点的距离对点进行排序
struct points {
int x, y, distance;
};
struct points*mypoints[size];
对于(i=0;i如何创建一个函数来记住已排序的数组索引?您可以使用C函数作为示例。您需要创建一个comparator函数。该链接提供了一个示例,还有更多联机示例。
struct points *mypoints[size];
for (i=0; i<size; i++) {
mypoints[i] = malloc(sizeof (struct points));
populate(mypoints[i]); // assign with x, y, dist
}
sort(mypoints);