【发布时间】:2023-03-11 15:55:01
【问题描述】:
假设我有一个包含以下元素的数组
int arr2[]={21,31,41,51,54,29,15,18,19,16,17};
我有第二个数组 arr
int arr[]={4,2,5};
现在我想借助 ACS 中的 arr 对 arr2 进行排序,使其像这样排序,最终数组变为
Final array should be 21,31,41,51,29,54,15,16,17,18,19
注意 arr[0]=4 因此前四个元素在 ASC 21,31,41,51 中排序
然后 arr[1]=2 因此接下来的两个元素在 ACS 中排序,所以它变成 21,31,41,51,29,54
然后 arr[2]=5 因此接下来的五个元素将在 ASC 中排序,因此它变为 21,31,41,51,29,54,15,16,17,18,19
现在最终数组变为 21,31,41,51,29,54,15,16,17,18,19
我怎样才能进行这种排序?
我用来执行此操作的代码是
int arr2[]={21,31,41,51,54,29,15,18,19,16,17};
int arr[]={4,2,5};
我可以使用下面的代码实现结果,但问题是当数组/元素的数量未知时我无法缩短它。
for (i=0;i<4-1;i++)
{
for (j=i+1;j<4; j++)
{
if( arr[i] > arr[j] )
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (i=5;i<6-1;i++)
{
for (j=i+1;j<7; j++)
{
if( arr[i] > arr[j] )
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (i=7;i<11-1;i++)
{
for (j=i+1;j<10; j++)
{
if( arr[i] > arr[j] )
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
【问题讨论】:
-
请考虑接受其中一个答案,如果它回答了您的问题。