찾다

 >  Q&A  >  본문

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

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];
    }
}
PHPzPHPz2887일 전459

모든 응답(6)나는 대답할 것이다

  • 黄舟

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

    삽입 정렬, 위 교환은 중간 변수를 사용하지 않지만 a=a+b가 오버플로를 일으킬 수 있다는 문제도 있습니다. 중간 변수가 없는 또 다른 방법은 XOR을 사용하는 것입니다: 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

    삽입정렬

    으아아아

    이 코드는 교환을 의미하며 중간 변수가 필요하지 않습니다

    회신하다
    0
  • 巴扎黑

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

    삽입 정렬. 2단계 루프 내부는 값 교환을 의미합니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 17:29:35

    삽입 정렬, 두 번째 수준 루프의 코드는 약간 지저분해 보일 수 있지만 단순화하면 다음과 같습니다.

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

    a = a – b;
    *은 a와 b의 값을 교환한다는 뜻입니다. 이해가 안 되면 특정 숫자를 대입해서 보면 됩니다.

    회신하다
    0
  • 취소회신하다