Arrays 在JAVA中,如何对数组的前k个元素按升序排序,其余元素按降序排序?

Arrays 在JAVA中,如何对数组的前k个元素按升序排序,其余元素按降序排序?,arrays,sorting,data-structures,merge,Arrays,Sorting,Data Structures,Merge,对数组的前k个元素按升序排序,其余元素按降序排序 Example : Input - { 9 3 2 8 7 4 1 5 6 } for **k = 4** Output - { 2 3 8 9 7 6 5 4 1 } 在java中,您可以在下面的代码片段中进行操作 1) 首先按升序排序,然后按降序排序 封装阵列 //按升序将元素排序到k,按降序将元素排序到k 公共类排序{ static int[] sortArrayAsc(int[] arr, int initial,in

对数组的前k个元素按升序排序,其余元素按降序排序

Example :  
Input -  { 9 3 2 8 7 4 1 5 6 }   
for **k = 4**  
Output - { 2 3 8 9 7 6 5 4 1 }

在java中,您可以在下面的代码片段中进行操作

1) 首先按升序排序,然后按降序排序

封装阵列

//按升序将元素排序到k,按降序将元素排序到k 公共类排序{

 static int[] sortArrayAsc(int[] arr, int initial,int finalvalue)
{

//   System.out.println("initial="+initial+" "+"final="+finalvalue);

     while(initial!=finalvalue)
     {
         int index=findMinimum(arr,initial,finalvalue);
//       System.out.println("index="+index);
//       System.out.println("arr value at index="+arr[index]);
         int temp=arr[initial];
         arr[initial]=arr[index];
         arr[index]=temp; 
         initial++;
     }

     return arr;
}

 static int[] sortArrayDsc(int[] arr, int initial,int finalvalue)
    {
    System.out.println("initial="+initial+" "+"final="+finalvalue);

         while(finalvalue!=initial)
         {
             int index=findMinimum(arr,initial,finalvalue);
        //   System.out.println("index="+index);
        //   System.out.println("arr value at index="+arr[index]);
             int temp=arr[finalvalue];
             arr[finalvalue]=arr[index];
             arr[index]=temp; 
             finalvalue--;
         }
         return arr;
    }

static int findMinimum(int[] arr,int initial,int finalvalue)
{
    int index = initial;
    int minimum=initial;
    while(index!=finalvalue-1)
    {
        if(arr[index+1]<arr[minimum])
        {
            minimum=index+1;
        }
        index++;
    }

    return minimum;
}

static void print(int[] arr)
{
    System.out.println("" );
    for(int i=0;i<arr.length;i++)
    {
        System.out.print(arr[i]+" ");
    }

}

public static void main(String[] args)
{

    int[] arr={42,12,5,55,6,61,3,59,32,1,8};
    int k=4;
    //result should be 5,12,42,55,61,59,32,8,6,3,1

    arr=sortArrayAsc(arr,0,4);

    print(arr);
    arr=sortArrayDsc(arr,4,arr.length-1);
    print(arr);
}
static int[]sortArrayAsc(int[]arr,int initial,int finalvalue)
{
//System.out.println(“initial=“+initial+”+“final=“+finalvalue”);
while(初始值!=最终值)
{
int index=findMinimum(arr、初始值、最终值);
//System.out.println(“index=“+index”);
//System.out.println(“索引处的arr值=”+arr[index]);
int temp=arr[初始值];
arr[初始值]=arr[索引];
arr[指数]=温度;
初始++;
}
返回arr;
}
静态int[]sortArrayDsc(int[]arr,int初始值,int最终值)
{
System.out.println(“initial=“+initial+”+“final=“+finalvalue”);
while(最终值!=初始值)
{
int index=findMinimum(arr、初始值、最终值);
//System.out.println(“index=“+index”);
//System.out.println(“索引处的arr值=”+arr[index]);
int temp=arr[最终值];
arr[最终价值]=arr[指数];
arr[指数]=温度;
最终价值--;
}
返回arr;
}
静态int findminium(int[]arr,int initial,int finalvalue)
{
int指数=初始值;
int最小值=初始值;
while(索引!=最终值-1)
{

if(arr[index+1]这是C中的数组程序,其中K之前的元素按升序排列或排序,K之后的元素按降序排列(类似于数组的前半部分和后半部分元素按升序和降序排列)。 解决方案:

#include <stdio.h> #define max 999 void main () { int n, i, j, k, arr[max], temp; printf ("enter the no of values \n"); scanf ("%d", &n); printf ("enter the values \n");for (i = 0; i < n; i++)
{
  scanf ("%d", &arr[i]);
} printf ("enter the no  \n"); scanf ("%d", &k); printf ("the given arry is \n"); for (i = 0; i < n; i++)
{
  printf ("%d", arr[i]);
  printf ("\n");
}for (i = 0; i < k; i++)
{
  for (j = 0; j < k; j++)
{
  if (arr[j] > arr[i])
    {
      temp = arr[j];
      arr[j] = arr[i];
      arr[i] = temp;
    }
}
} printf ("ascending order is \n"); for (i = 0; i < k; i++)
{
  printf ("%d", arr[i]);
  printf ("\n");
} printf ("\n"); for (i = n - 1; i >= k; i--)
{
  for (j = n - 1; j >= k; j--)
{
  if (arr[j] < arr[i])
    {
      temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
}
} printf ("decending order is \n"); for (i = n - 1; i >= k; i--) {
  printf ("%d", arr[i]);
  printf ("\n");
} }
#包括#定义max 999 void main(){int n,i,j,k,arr[max],temp;printf(“输入值的数量”);scanf(“%d”,&n);printf(“输入值”);for(i=0;iarr[i])
{
温度=arr[j];
arr[j]=arr[i];
arr[i]=温度;
}
}
}printf(“升序是\n”);for(i=0;i=k;i--)
{
对于(j=n-1;j>=k;j--)
{
if(arr[j]=k;i--){
printf(“%d”,arr[i]);
printf(“\n”);
} }

到目前为止,您编写了哪些代码,能否编辑您的问题以将其包括在内?我想这是您的家庭作业。请自己尝试一下。该程序可以进行两种排序,从索引0上升到k-1,然后从k下降到大小-1。@GrandMasterFlush感谢您的回答。我在合并两个数组时遇到了问题。现在,我重新开始我自己解决了:)@sunkuet2完成了。:)在java中,我们使用函数