빠른 정렬 (2)

1047 단어
#include <stdio.h>
int a[100];  // , 
void quickSort(int, int);

int main(){
	
	int i, j, temp, left, right, n;
	printf(" :");
	scanf("%d",&n);
	for(i = 0; i < n; i++){
		scanf("%d", &a[i]);
	}
	quickSort(0,n-1); 
	printf(" :
"); for(i = 0; i < n; i++){ printf("%d
", a[i]); } return 0; } void quickSort(int left, int right){ int t, i, j, temp; if(left > right) // , return; temp = a[left]; i = left; j = right; while(i != j){ while(a[j] >= temp && i < j){ j--; } while(a[i] <= temp && i < j){ i++; } if(i < j){ // , t = a[i]; a[i] = a[j]; a[j] = t; } } a[left] = a[i]; a[i] = temp; quickSort(left,i-1); quickSort(i+1,right); return; }

총결: 이 빠른 순서는 이전의 그것보다 더 잘 이해되고 양자가 사용하는 사상은 일치한다.
        1.끝에서 가운데로 이동 (중간 값보다 크면 이동)
        2.첫 번째부터 가운데로 이동(중간 값보다 작으면 이동)
        3.둘이 같을 때까지 제자리로 돌아가다
        4.하나의 귀속 함수

좋은 웹페이지 즐겨찾기