R [j] = r [I];
R [I] = r [j];
R [j] = r [I];
I==j 를 제외해야 합니다. 자신과 자신을 교환하는 것입니다.
예를 들면 다음과 같습니다.
A = 9;;
A = a; /*a=0*/
A = a; /*a=0*/
A = a; /*a=0*/
A 는 더 이상 10 이 아닙니다.
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
Void quicksort(int R[], int s, int t)
{
Int I, j;
내부 온도
If(s & lt;; T)
{
Temp = r [s]; /* 첫 번째 숫자를 참조로 선택 */
/* 화이트 (나! =j) i==j- 1, i++, j- I > j 이후! = 이 상황은 너를 구할 수 없다 */
For(i=s+ 1, j = t;; 나<= j;; I++, j-)/* 참조 번호 제외, 좌우 진영역 */
{
While(j & gt;; 나& & ampr [j] > = temp)/* r [j] > =temp 가 아니라 추가하는 것이 좋습니다. 결국, 왼쪽과 오른쪽에 서 있는 것은 중요하지 않다.
J-;
While (나< 존슨. & ampr [I] < = 온도)
I++;+;
만약! =j){/*i 는 j*/
R [j] = r [I];
R [I] = r [j];
R [j] = r [I];
}
}
I-;
If (r [s] < R [I]) I-; /* I 가 참조 수보다 작거나 같은 마지막 위치를 가리키도록 I 값을 조정합니다 */
/* 참조 번호보다 작거나 같은 마지막 숫자로 참조 번호를 교환하여 왼쪽 및 오른쪽 진영을 실제로 분리합니다 */
R [s] = r [I];
R [I] = temp;
빠른 정렬 (r, s, I-1);
Quicksort(R, i+ 1, t);
}
}
인트메인 (void)
{
Int I;;
Inta [] = {5,3,2, 1, 9,8,7,4,5};
Quicksort(a, 0, sizeof (a)/sizeof (int)-1);
For(I = 0;; 나< sizeof (a)/sizeof (int); I++)
Printf ("%d", * (a+I));
0 을 반환합니다
}