電脳ミツバチのコンピュータ広報室

銀座の屋上菜園を耕しています。コンピュータ畑も耕します。

quicksort

スポンサーリンク

覚えてしまえば一番よく使うと思われるソート。
個人的には基本ソートの中ではマージソートに続いて難しい。

void qsort(int data[],int start,int end);
//*プロトタイプ宣言*//

void sort(int input[],int output[],int size)
{
	int i;
	for(i=0;i<size;i++)
	{output[i]=input[i];}
	
	qsort(output,0,size-1);
}
//*再起関数qsort*//
void qsort(int data[],int start,int end)
{
	
	int i,j;
	int m;
	int temp;
	if(end-start<=1)
	{return ;}
	else
	{
		i=start;
		j=end;
		m=data[start];
		while(i<j)
		{	
			for(;data[i]<m;i++);
			for(;data[j]>m;j--);
			if(i<j)
			{
				temp=data[i];
				data[i]=data[j];
				data[j]=temp;
			}
		}
		if(i==j)
		{
			qsort(data,start,i-1);
			qsort(data,i+1,end);
		}
		else
		{
			qsort(data,start,j);
			qsort(data,i,end);
		}
	}
}