Java数组元素位置交换?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java数组元素位置交换?相关的知识,希望对你有一定的参考价值。

需求:1、定义一个int类型的一维数组,内容为6,2,9,15,1,5,20,7,18。 2、将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组。

题目很简单,关键是思路

    先找出最大值、最小值,并记住其位置

    再做交换

具体参考下列代码

import java.util.Arrays;

public class Test 

/**
 * @param args
 */
public static void main(String[] args) 
// 第一步:定义数组
int[] arrs =  6, 2, 9, 15, 1, 5, 20, 7, 18 ;
// 第二步:找出最大值、最小值
int maxIndex = 0; // 最大值初始索引 = 0
int max = arrs[maxIndex];

int minIndex = 0; // 最小值初始索引 = 0
int min = arrs[minIndex];
for (int i = 1; i < arrs.length; i++) 
if (arrs[i] > max) 
max = arrs[i];
maxIndex = i;

if (arrs[i] < min) 
min = arrs[i];
minIndex = i;


System.out.printf("第[%d]个值是最大值:%d \\n", (maxIndex + 1), max);
System.out.printf("第[%d]个值是最小值:%d \\n", (minIndex + 1), min);

System.out.println("开始交换最大值");
int end = arrs[arrs.length - 1]; // 记录最后一个元素值
arrs[arrs.length - 1] = max; // 最后一个元素值 = max
arrs[maxIndex] = end; // 原最大值 = 最后一个值

int start = arrs[0]; // 记录第一个元素值
arrs[0] = min; // 第一个元素值 = min
arrs[minIndex] = start; // 原最小值 = 第一个值

System.out.println("最终结果:");
System.out.println(Arrays.toString(arrs));

亲,答题也需要时间和精力,如果回答满意,请及时采纳,你的合作是我回答的动力!! 谢谢!!

参考技术A

1、定义一个int类型的一维数组,内容为6,2,9,15,1,5,20,7,18。

2、将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组。

具体如下:
1、简介
编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
2、汇编程序
汇编程序。使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、繁琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。
3、执行原理
计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级编程硬件程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式。

根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……

参考技术B /**
 * 需求:
 *  1、定义一个int类型的一维数组,内容为6,2,9,15,1,5,20,7,18。
 *  2、将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组。
 */
public class ExChange 

public static void main(String[] args) 
int[] arr = 6,2,9,15,1,5,20,7,18;
int max = arr[0];//假设第一位元素为最大值
int min = arr[0];//假设第一位元素为最小值
for(int i=0;i<arr.length;i++)
if(arr[i]>max)
max = arr[i];//找出最小值

if(arr[i]<min)
min = arr[i];//找出最小值


for(int i=0;i<arr.length;i++)
if(max==arr[i])//找出最大值所在位置,然后与最后一位元素交换
int temp = arr[arr.length-1];
arr[arr.length-1] = arr[i];
arr[i] = temp;

if(min==arr[i])//找出最小值所在位置,然后与第一位元素交换
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;


for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");//打印结果



本回答被提问者采纳

java的几种基本的排序算法

选择排序(以递增排序为例):通过内部循环第一次遍历数组找到最小的元素与数组的第一个元素交换位置,第二次遍历数组找到第二小的元素与数组的第二个元素交换位置,当内存循环找到最小的元素并交换位置后下次遍历时应该避开这个最小元素。这种排序方法对任何结构的数组都是O(n²)的时间复杂度

public static int[] orderBySelect(int[] a){
        for(int i=0;i<a.length;i++){
            int temp=a[i];
            int flag=i;
            for(int j=i+1;j<a.length;j++){
                if(temp>a[j]){
                    temp=a[j];
                    flag=j;
                }
            }
            if(flag!=i){
                a[flag]=a[i];
                a[i]=temp;
            }
        }
        return a;
    }

 插入排序(以递增排序为例):假定第一个元素为最小元素,判定第二个元素与第一元素的大小,如果第二个小于第一个,则交换位置,这时候第一个和第二个已经排好序,通过第三个元素与前面已经排好的第二个元素进行比较,如果大于第二个,则进行下一轮循环、否则交换位置后继续与第一个元素进行比较,外部控制循环到达直到到达数组末端。这种排序方式有个相对于选择排序有个好处就是如果数组本身就已经有部分排好序,则在后面的比较中当与前面已经排好序的最大值进行比较时如果大于最大值的元素就会忽略掉与其他元素的比较,节省了时间

public static int[] orderByInsert(int[] a){
        for(int i=1;i<a.length;i++){
            int temp=a[i];//保存当前将要用于插入的值
            int j=i-1;//用于遍历已经排好序的子集的下标
            if(temp<a[j]){//判断子集的最大值与当前的值的大小,如果当前值大,则不需要循环
                while(j>=0 && a[j]>temp){//如果子集的元素大于当前值,则修改当前值的位置
                    a[j+1]=a[j];//将j的位置的值向前移动,用于存放当前值
                    j--;//进入下一次循环
                }
                a[j+1]=temp;//循环结束后子集中所有大于temp的值都向前移动了一步,这时候j+1的位置就是temp应该插入的位置
            }
        }
        return a;
    }

 

 冒泡排序(以递增排序为例):冒泡排序的思想是从左到右(从右到左)进行相邻元素的大小判定,如果后一个元素小于前一个元素,交换位置,一轮循环后最大值将在最右边  

public static int[] orderByBubble(int[] a){
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a.length-i-1;j++){
                if(a[j]>a[j+1]){
                    int temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        return a;
    }

 

 归并排序(以递增排序为例):归并

以上是关于Java数组元素位置交换?的主要内容,如果未能解决你的问题,请参考以下文章

Java数组排序算法之直接选择排序

交换数组两个数位置方法

java 选择排序

java 怎么交换同一数组里面的两部分元素的位置 像 {1,2,3,4,5,6} 最后结果是{4

Java

java的几种基本的排序算法