分類:[C/C++]
2008/11/09(Sun) 11:26:05 編集(投稿者)
Jitta on the wayさんのご指摘により
char を int に書き換えました。
お世話様です。
C言語で書いたクイックソートです
再帰で書いていますがループに変換した
コードはどうなるのでしょうか?
一応参考として知りたい程度です。
宜しくお願いします。
//
// プログラム名
// 作成者
// 作成日
//
// 動作概要 クイックソート
//
#include <stdio.h>
#include "myutil.h" //SWAPを使用するために参照
int data[] = { 3,9,-8,5,9,1,-2,-5,13,0};
int n = sizeof(data)/sizeof(int);
int i;
void Quicksort(int *v,int left,int right)
{
int i,last;
if(left>=right)
return;
last=left;
for(i=left+1;i <= right;i++)
{
if(v[i] <= v[left])
{
last++;
SWAP(int,v[last],v[i]);
}
}
SWAP(int,v[left],v[last]);
Quicksort(v ,left,last-1);
Quicksort(v,last+1,right);
}
int main()
{
for(i=0;i<n;i++)
printf("%d ",data[i]); //元の配列の確認
printf("\n\n");
// ポインタで記述
int *p =data;
for(i=0;i<n;i++)
printf("%d ",*(p+i)); //元の配列の確認
printf("\n\n");
//クイックソートして表示
Quicksort(data,0,n-1);
for(i=0;i<n;i++)
printf("%d ",data[i]); //ソート後の結果の確認
return 0;
}