杂乱的数组中给元素从大到小标顺序,原顺序不变

#include<stdio.h>
#include<malloc.h>
int *sortindex(int a[],int n)
{
 int i,j,temp;
    int *p;
    p=(int*)malloc(sizeof(int)*n);
    for( i=0;i<n;i++)
         p[i]=a[i];
    for(i=0;i<n-1;i++)
       for(j=0;j<n-1-i;j++)
         if(p[j]>p[j+1])
         {
           temp=p[j];
           p[j]=p[j+1];
           p[j+1]=temp;
         }
 printf("\n");
   return p;
   free(p);
}
void main()
{
 int i,j;
 int a[9]={1,2,9,6,4,3,5,8,7};
 int *p;
 for( i=0;i<9;i++)
  printf("%3d",a[i]);
 printf("\n");
 p=sortindex(a,9);
 for(i=0;i<9;i++)
  for( j=0;j<9;j++)
  {
   if(a[i]==p[j])
    printf("%3d",j);
  }
 printf("\n");
}

1.这里面定义一个指针类型的函数,所以函数返回的要是一个地址。
2.定义另外一个数组和原杂乱数组一样,然后给新定义的数组排列顺序(从小到大),然后用排序后的新定义的数组与原杂乱数组相比较,输出他的下标i的值,就是每个数组元素在数组里面的大小排列序号。

在Java中,删除数组中值最和最小的元素,同时保持数组顺序不变,可以通过以下步骤来实现: 1. 首先,我们需要找到数组中的最值和最小值。这通常通过遍历数组来完成,同时记录下最值和最小值的位置。 2. 然后,我们可以将最值和最小值之外的所有元素向前移动一位,覆盖掉最值和最小值所在的位置。 3. 最后,我们减少数组的长度以排除最后的空位。 下面是一个简单的实现示例: ```java public class RemoveMinMax { public static void removeMinMax(int[] arr) { if (arr == null || arr.length <= 2) { throw new IllegalArgumentException("数组长度必须于2"); } // 找到最值和最小值的索引 int maxIndex = 0, minIndex = 0; for (int i = 1; i < arr.length; i++) { if (arr[i] > arr[maxIndex]) { maxIndex = i; } if (arr[i] < arr[minIndex]) { minIndex = i; } } // 移动元素覆盖最值和最小值 for (int i = minIndex; i < maxIndex; i++) { arr[i] = arr[i + 1]; } // 减少数组长度 int newLength = arr.length - 2; int[] newArr = new int[newLength]; System.arraycopy(arr, 0, newArr, 0, newLength); arr = newArr; } public static void main(String[] args) { int[] array = {3, 1, 4, 2, 5}; removeMinMax(array); // 输出结果应为 [3, 4, 5] for (int value : array) { System.out.print(value + " "); } } } ``` 这段代码定义了一个`removeMinMax`方法,它接受一个整数数组作为参数,并移除数组中的最和最小值。注意,由于数组的长度在Java中是固定的,我们需要创建一个新的数组来存储剩余的元素,并将数组指向这个新数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值