您的位置:首页 > 文旅 > 美景 > 网络平台建设怎么做_模板网站如何大量复制上线_个人网站建站教程_百度推广代理商有哪些

网络平台建设怎么做_模板网站如何大量复制上线_个人网站建站教程_百度推广代理商有哪些

2025/4/15 17:21:04 来源:https://blog.csdn.net/weixin_65550131/article/details/147101756  浏览:    关键词:网络平台建设怎么做_模板网站如何大量复制上线_个人网站建站教程_百度推广代理商有哪些
网络平台建设怎么做_模板网站如何大量复制上线_个人网站建站教程_百度推广代理商有哪些

由题意得知给我们一串数字,我们每次交换两位,最少交换多少次成功得到有顺序的数组。我们以平常的思维去思考,加入给你一串数字获得最少的交换次数,意味着你的交换后续基本不会变,比如说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;}

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com