搜索

首页  >  问答  >  正文

java - 请问描述中的排序叫什么名字。

1

2

3

4

5

6

7

8

9

10

<code>int[] array = { 4, 7, 1, 5, 2, 6 };

for (int i = 0; i < array.length; i++)

{

    for (int j = i; j > 0 && array[j - 1] > array[j]; j--)

    {

        array[j] = array[j - 1] + array[j];

        array[j - 1] = array[j] - array[j - 1];

        array[j] = array[j] - array[j - 1];

    }

}</code>

PHPzPHPz2887 天前454

全部回复(6)我来回复

  • 黄舟

    黄舟2017-04-17 17:29:35

    插入排序,上面的交换是不用中间变量,但是也存在一个问题,会存在可能溢出的情况,因为a=a+b可能导致溢出,另外一种不用中间变量的方式是采用异或:a=a^b ,b=a^b,a=a^b 这种方式不适合于浮点数,总之,只是采用了不用任何额外的空间实现交换数据而已。。。重点还是在算法本身。。

    回复
    0
  • 迷茫

    迷茫2017-04-17 17:29:35

    嵌套循环是插入排序的写法,但是内层循环体却跟插入排序不一样。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:29:35

    插入排序,第二层循环就是如果array[j-1]>array[j],交换array[j]和array[j-1]的值

    回复
    0
  • 阿神

    阿神2017-04-17 17:29:35

    插入排序

    1

    2

    3

    <code>array[j] = array[j - 1] + array[j];

    array[j - 1] = array[j] - array[j - 1];

    array[j] = array[j] - array[j - 1];</code>

    这段代码就是交换的意思,不用中间变量

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:29:35

    插入排序。第二层循环内部是交换值的意思

    回复
    0
  • ringa_lee

    ringa_lee2017-04-17 17:29:35

    插入排序,第二层循环里面那段代码,看着估计有点乱,但简化一下看就相当于:

    a = a + b;
    b = a – b;

    a = a – b;
    *就是a和b的值交换的意思,看不明白可以代入具体数字去看看。

    回复
    0
  • 取消回复