빠른 정렬 (C 언어 판)

빠른 정렬 : 

#include<stdio.h>
void quicksort(int * arr, int left,int right);
void swap(int *a,int *b);
int main()
{
	int arr[10]={2,6,3,9,5,2,0,23,12,1};
	int length=sizeof(arr)/sizeof(arr[0]);
	quicksort(arr,0,length-1);
	for(int i=0;i<length;i++)
		printf("%d ",arr[i]);
}
void quicksort(int * arr, int left,int right)
{
	int i=left,j=right;
	int temp=arr[left];
	if(left>right)
		return;
	while(i<j)
	{
		while(arr[j]>=temp&&i<j)
			j--;
		while(arr[i]<=temp&&i<j)
			i++;
		if(i<j)
			swap(&arr[i],&arr[j]);	
	}
	arr[left]=arr[i];
	arr[i]=temp;
	quicksort(arr,left,i-1);
	quicksort(arr,i+1,right);
	return;
}
void swap(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}

수식 : 나는 좌우 빠른 배수 J, 나는 <J;

           바로 앞 왼쪽에 대한 참조;

           왼쪽 및 오른쪽 큰 j-- 작은 내가 ++;

           왼쪽 및 오른쪽 위상 교환보다 큰;

           난 J = 철회;

           I 값과 상기 기준 센서 수단;

           왼쪽의 가치와 재정렬 바로 값.

게시 33 개 원래 기사 · 원 찬양 30 ·은 20000 +를 볼

추천

출처blog.csdn.net/baidu_15547923/article/details/99690091