java - 请问描述中的排序叫什么名字。
PHPz
PHPz 2017-04-17 17:27:35
0
6
456
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];
    }
}
PHPz
PHPz

学习是最好的投资!

모든 응답(6)
黄舟

삽입 정렬, 위 교환은 중간 변수를 사용하지 않지만 a=a+b가 오버플로를 일으킬 수 있다는 문제도 있습니다. 중간 변수가 없는 또 다른 방법은 XOR을 사용하는 것입니다: a=a. ^b,b=a^b,a=a^b 이 방법은 부동 소수점 숫자에는 적합하지 않습니다. 즉, 추가 공간 없이 데이터를 교환하는 데 사용됩니다. . . 초점은 여전히 ​​알고리즘 자체에 있습니다. .

迷茫

중첩 루프는 삽입 정렬로 작성되지만 내부 루프 본문은 삽입 정렬과 다릅니다.

大家讲道理

삽입 정렬, 루프의 두 번째 수준은 array[j-1]>array[j]인 경우 array[j]와 array[j-1]의 값을 교환하는 것입니다

阿神

삽입정렬

으아아아

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

巴扎黑

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

左手右手慢动作

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

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿