按升序排序数组的前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 }
答案 0 :(得分:0)
在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);
}
}
答案 1 :(得分:-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");
} }