每日一题(小白)暴力娱乐篇23

由题意得知给我们一串数字,我们每次交换两位,最少交换多少次成功得到有顺序的数组。我们以平常的思维去思考,加入给你一串数字获得最少的交换次数,意味着你的交换后续基本不会变,比如说2 1 3 5 4 中1与2交换后不变,4与5交换后不变。而且已知给出的数字必定和下标顺序一致,那么我们可以更换数字直到它和对应下标相同即可得到结果。

①数组接收数据

②循环遍历数组,和下标不对应就进行更换直到对应下标相同

③找到对应下标的数字后交换两个数字

④每次交换使用计数器加1

⑤输出计数器结果

代码如下👇

复制代码
	public static void main(String[] args) {
			Scanner scan=new Scanner(System.in);
		    int n=scan.nextInt();
		    int[] arr=new int[n+1];
		    for (int i = 1; i <= n; i++) {
				arr[i]=scan.nextInt();
			}
		    int count=0;
		    for (int i = 1; i <= n; i++) {//遍历数组
				while(arr[i]!=i) {//r如果位置不对,一直更换到位置对
					int temp=arr[arr[i]];
					arr[arr[i]]=arr[i];
					arr[i]=temp;
					++count;
				} 
				for (int j = 1; j < arr.length; j++) {
				System.out.print(arr[j]+" ");//测试
			}
				System.out.println();//测试
			}
		    System.out.println(count);
		  
		    
			scan.close();
    }

	public static void swap(int a,int b) {
		int temp=0;
		temp=a;
		a=b;
		b=temp;
	}

交换代码如上,如果觉得第一个代码比较复杂可以看一下图示,或者写一个全局方法。

相关推荐
To_OC1 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔1 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
2401_841495642 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区5 小时前
怎么把C语言学到精通?
c语言·开发语言