求一个算法

xxg2810 2010-04-07 03:40:39
给出一个数组,输出这个数组各个值在数组中的大小顺序。
例如arr[5]={3,5,3,7,4}
输出{1,2,1,4,3}
...全文
165 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊司马 2010-04-08
  • 打赏
  • 举报
回复
简单的算法 好像没有考虑到数组里有重复的元素
import java.util.*;
public class Testindex{
public static void main(String[] args){
int []a={3,5,1,7,4};
int []b=new int[5];
int h;
System.arraycopy(a, 0, b,0,a.length);
int m=b.length;
int k;
int temp=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-1;j++){
if(a[i]<a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
System.out.println("");
/*for(k=0;k<a.length;k++){
System.out.print(a[k]+" ");
}
System.out.println("");*/

for(h=0;h<m;h++){
for(k=0;k<a.length;k++){
if(b[h]==a[k]){
int x=k+1;
System.out.print(x+" ");
}
}
}
}
}
luokuo 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wpooh 的回复:]
Java code

import java.util.*;
class test
{
public static void main(String[] args){
int a[]={3,5,3,7,4};
int i,j,k;
int b[]=new int[5];
int c[]=new int[5];
……
[/Quote]

学习了
xxg2810 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wpooh 的回复:]

Java code

import java.util.*;
class test
{
public static void main(String[] args){
int a[]={3,5,3,7,4};
int i,j,k;
int b[]=new int[5];
int c[]=new int[5];
S……
[/Quote]
很聪明 很聪明
xxg2810 2010-04-08
  • 打赏
  • 举报
回复
谢谢上面的好心人们,让我好好拜读一下
WPooh 2010-04-07
  • 打赏
  • 举报
回复

import java.util.*;
class test
{
public static void main(String[] args){
int a[]={3,5,3,7,4};
int i,j,k;
int b[]=new int[5];
int c[]=new int[5];
System.arraycopy(a, 0, b,0,a.length);
Arrays.sort(b);
k=b.length;
for(i=0;i<k;++i){
if(b[i]==b[i+1]&&(i+1)<k){
for(j=i+1;j<k;++j){
b[j-1]=b[j];
}
k--;i--;
}
}
for(i=0;i<a.length;++i){
for(j=0;j<k;++j){
if(a[i]==b[j]) {c[i]=j+1;break;}
}
}
for(i=0;i<a.length;++i){
System.out.println(a[i]+"--> pos["+c[i]+"]");
}
}
}
13兄 2010-04-07
  • 打赏
  • 举报
回复
package test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {3,5,3,7,4}; //原数组
int[] newArr = arr.clone(); //克隆一个
int[] position = new int[arr.length]; //要输出的位置数组
Map map = new HashMap();

//对数组由小到大排序
for(int i = 0; i < newArr.length; i++){
int temp;
for(int j = i + 1; j < newArr.length; j++){
if (newArr[i] > newArr[j]) {
temp = newArr[i];
newArr[i] = newArr[j];
newArr[j] = temp;
}
}
}

//把排序后的数组去重,保存到MAP中
int j = 1;
for(int i = 0; i < newArr.length; i++){

if (i == 0) {
map.put(newArr[i], j);
j++;
} else {
if (newArr[i] != newArr[i-1]) {
map.put(newArr[i], j);
j++;
}
}

}

//把原数组与map中的键比较,一致的就保存map的值到position数组中
Set set = map.keySet();
for (int i = 0 ; i < arr.length; i++) {
Iterator it = set.iterator();
while (it.hasNext()) {
int k = (Integer)it.next();
if (arr[i] == k) {
position[i] = (Integer) map.get(k);
break;
}
}
}

for (int i = 0 ; i < position.length; i++) {
System.out.println(position[i]);
}
}

}
keeya0416 2010-04-07
  • 打赏
  • 举报
回复
用的是空间换时间,这个代码中的数组必须是正整数;
如果有负数 或 数组中有的值非常大
就得用别的方法了
常规方法的时间复杂度是 O(n*logn)
而本例中的时间复杂度是 O(n)

package com.keeya.csdn.test;

public class GetValuesArray {

public static void main(String[] args) {
int[] arr = { 3, 5, 3, 7, 4 };
int[] v = arrTheValues(arr);
for(int i = 0; i < v.length; i++){
System.out.print(v[i] + " ");
}
}

public static int[] arrTheValues(int[] arr) {
int[] values = new int[getMaxOfArray(arr) + 1];
int[] arrValuesArray = new int[arr.length];
int temp = 0;
for (int i = 0; i < arr.length; i++) {
values[arr[i]] = 1;
}
for (int j = 0; j < values.length; j++) {
if (values[j] == 0) {
temp++;
} else {
values[j] = j + 1 - temp;
}
}
for (int m = 0; m < arr.length; m++) {
arrValuesArray[m] = values[arr[m]];
}
return arrValuesArray;
}

private static int getMaxOfArray(int[] arr) {
if (arr == null)
return -1;
int temp = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > temp) {
temp = arr[i];
}
}
return temp;
}
}

keeya0416 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 xxg2810 的回复:]
给出一个数组,输出这个数组各个值在数组中的大小顺序。
例如arr[5]={3,5,3,7,4}
输出{1,2,1,4,3}是{1,3,1,4,2}吧?
[/Quote]
mark 现在去写
jacky花园 2010-04-07
  • 打赏
  • 举报
回复
最笨的办法:
先排序
再按位置输出下标
(当数值相同时,考虑先后顺序)
xxg2810 2010-04-07
  • 打赏
  • 举报
回复
不难阿,哪位帮帮我
大气污染是影响公众健康与生态环境的重要问题,精准的空气质量时空预测与污染源贡献度量化是精准治污的关键支撑。针对现有研究多源融合不充分、时空关联刻画不足、预测与源解析割裂三方面缺陷,本文设计实现了城市空气质量时空预测与污染源贡献度分析系统,融合监测、气象、工业排放与交通四类数据,构建基于时空注意力的LSTM(STAM-LSTM)预测模型与基于正定矩阵因子分解(PMF)的源解析模型,形成数据融合-特征工程-预测-源解析-可视化闭环。 系统实现四类数据时空对齐与融合,构建时序与空间邻域特征,以普通克里金插值生成1km网格浓度场;STAM-LSTM引入时空注意力自适应学习站点间污染传输时变权重,以72小时输入预测未来24小时逐小时PM2.5浓度;PMF识别交通、工业、燃煤、扬尘与二次生成五个源因子,量化各源全年贡献度并分析时空演变。 实验表明:STAM-LSTM预测RMSE 24.6、MAE 17.8、R² 0.88,相对LSTM基线(30.2)提升18.5%;普通克里金插值误差8.9,优于反距离加权(11.4);源解析显示交通源28.4%、工业源23.1%、燃煤源19.6%为主要贡献源,冬季燃煤源升至27.3%、早高峰交通源达34.8%,下风向工业源贡献高出上风向8~12个百分点;减排情景显示交通源减排20%可使年均PM2.5下降5.7%,与源贡献度排序一致。 系统按五模块14组件实现,功能测试16项用例全部通过,为大气污染预警、源管控与减排政策制定提供了决策依据。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论 第3章 系统需分析 第4章 系统总体设计 第5章 系统详细设计与实现 第6章 系统测试与分析 第7章 总结与展望 参考文献 附件-实现指南
基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测研究(Python代码实现)内容概要:本文提出了一种基于iTransformer-BiGRU-KAN多模型融合的滚动轴承剩余寿命预测方法,旨在通过结合多种先进深度学习模型的优势,提升在复杂工况下的预测精度与鲁棒性。该方法利用iTransformer捕捉长期时间序列中的全局依赖关系,通过BiGRU模型提取双向时序特征,最后引入KAN(Kernel Attention Network)增强非线性映射与关键特征的自适应加权能力,实现对轴承退化过程的精准建模。文中详细介绍了模型架构设计、训练流程及在公开数据集上的实验验证,结果表明该融合模型相比单一模型在预测精度和稳定性方面均有显著提升。; 适合人群:具备一定机器学习与深度学习基础,从事设备故障诊断、工业大数据分析或智能运维相关领域的研究人员及工程技术人员,尤其适合研究生及以上学历或有相关项目经验的专业人员。; 使用场景及目标:①应用于工业设备状态监测与预测性维护系统中,实现对滚动轴承等关键部件剩余寿命的精准预测;②为复杂时间序列回归任务提供多模型融合的设计思路与技术参考;③推动深度学习在智能制造与工业物联网领域的落地应用。; 阅读建议:建议读者结合Python代码实现部分,深入理解各子模型的接口设计与融合逻辑,重点关注特征融合机制与注意力权重的可视化分析,以便在实际项目中灵活调整与优化模型结构。
几何旋转和天线校准模式对GNSS相位缠绕的组合效应(Matlab代码实现)内容概要:本文研究了几何旋转和天线校准模式对全球导航卫星系统(GNSS)相位缠绕的组合效应,并提供了基于Matlab的代码实现方案。相位缠绕是GNSS高精度定位中的重要误差源,受卫星与接收机相对几何关系及天线相位中心变化的共同影响。文章通过建模分析几何旋转与天线校准参数对相位缠绕的影响机制,探讨二者耦合作用下的修正方法,旨在提升GNSS数据处理的精度与可靠性。研究涵盖了理论建模、算法实现与仿真实验,结合Matlab工具进行数值模拟与结果可视化,验证了所提方法的有效性。; 适合人群:具备一定GNSS基础知识和Matlab编程能力的科研人员、研究生及从事高精度定位相关工作的技术人员。; 使用场景及目标:①用于GNSS高精度数据处理中相位缠绕误差的精确建模与修正;②支持地壳形变监测、精密授时、卫星定轨等对定位精度要较高的应用场景;③为相关算法开发与教学研究提供可复现的代码实例。; 阅读建议:建议读者结合GNSS误差处理的相关理论,边运行代码边理解算法细节,重点关注几何旋转模型与天线校准参数的集成方式,并可通过修改参数进行敏感性分析以加深理解。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧