java数组交换位置,定义临时变量后,交换公式顺序问题

public class array01 {

    public static void main(String[] args){
        int[] array = {32,4,56,34,17,39,68,25};//定义一个无序数组
            for(int i=0;i<array.length-1;i++){
                for(int j=0;j<array.length-i-1;j++){
                    if(array[j]>array[j+1]){
                        int temp = array[j];//定义一个临时变量用于交换位置
                        array[j] = array[j+1];//以下两个赋值公式有先后之分,如果先是“array【j+1】=temp”,再执行“array[j] = array[j+1]”,因为array【j+1】被赋值了temp,则array【j】也等于temp.重复相同的值。
                        array[j+1] = temp;

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

}
时间: 2024-11-05 17:24:56

java数组交换位置,定义临时变量后,交换公式顺序问题的相关文章

java 数组使用和定义

java数组定义及使用 3.1数组 数组是一组相关数据的集合,数组按照使用可以分为一维数组.二维数组.多维数组 有点: 不使用数组定义100个整形变量:int1,int2,int3;;;;;; 使用数组定义 int i[100] 数组定义:int i[100],只是一个伪代码,只能表示含义的. 3.2一维数组 可以存放上千万个数据,并且这些数据的类型是完全是相同的. 要使用java的数组,必须经过两个步骤:(1)声明数组,(2)分配内容给该数组,这两个步骤的语法如下: 声明形式一: ◇声明一维数

不利用临时变量,交换两个变量的值

1.借助中间量交换 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用.在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法).上面的算法最大的缺点就是需要借助一个临时变量.那么不借助临时变量可

C语言中不允许创建临时变量,交换两个数的内容

在C语言中可以通过建立临时变量来实现两个变量的交换,当不允许建立临时变量时,应该怎样实现两变量的交换呢? 假设有两个变量num1和num2:下面通过两种方法进行分析. 方法一:利用加减法.具体算法分析如下: 由于num1+num2-num1=num2; num1+num2-num2=num1; 则将num1+num2赋给num1:num1-num2赋给num2:num1-num2赋给num1,这样就可以实现num1和num2两个数内容的交换.通过相同的思想,我们也可以将加减运算改为乘除运算,但此

不使用临时变量 依次交换两个已知数组的值

刚开始编写中间使用了一个临时数组!!浪费空间!后面优化到只使用一个临时变量!最后到不使用临时变量! #include<stdio.h> int main() { int arr1[] = { 1, 2, 3 }; int arr2[] = { 4, 5, 6 }; int i = 0; int sz = sizeof arr1 / sizeof arr1[0]; for (i = 0; i < sz; i++) { arr1[i] = arr1[i] ^ arr2[i]; arr2[i]

不用临时变量,交换两个变量的值

在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量.类似于:temp=a;a=b;b=temp;这样的语句,如果在没有临时变量的情况下,该如何做呢?网络上的人们给出了两种方法:一.异或法a=a^b;b=b^a;a=a^b;二.加减法a = a + b; b = a - b; a = a - b;其实我们看加减法更容易理解,也有许多人用这种方法,虽然这些方法可能用不到,但是了解下还是有必要的,至少要读懂别人的代码是吧. 其实两个方法都类似,我们没有临时变量,就自己用一个来做临时变量(相当

不定义临时变量情况下,交换两个变量的值

1 #include <iostream> 2 using namespace std; 3 4 5 void swap(int& x,int& y) 6 { 7 y = x + y; 8 x = y - x; 9 y = y - x; 10 } 11 12 int _tmain(int argc, _TCHAR* argv[]) 13 { 14 int a = 10, b=20; 15 cout << "before swap: a= "<

不创建临时变量,交换两整数的值

(1)加减法:a=a+b;b=a-b;a=a-b; (2)乘除法:a=a*b;b=a/b;a=a/b; (3)异或运算:a=a^b;b=a^b;a=a^b;(遇到a可翻译b,遇到b可翻译a) ^异或(按位异或):相同出0,相异出1. 如:2    0000 0000 0000 0010 3    0000 0000 0000  0011 2^3      0000 0000 0000 0001 =1 2^3^2  0000 0000 0000 0011=3 --加减运算#include <std

Java 数组初始化与定义的解惑

不需要创建临时变量,交换两个数的值。

The easier way: #include<stdio.h> #include<stdlib.h> int main() { int a,b; scanf("%d%d",&a,&b); a=a+b; b=a-b; a=a-b; printf("a=%d\nb=%d\n",a,b); system("pause"); return 0; } The solution is easy to deal wi