作者markoo (上行下笑阿..)
看板NCTU-STAT98G
标题0721 统算 example 2-1.cpp
时间Tue Jul 21 12:42:17 2009
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int i,j,k;
int n; //size of data
int index;
double temp,temp2;
double *data;
printf("Input the size of data:");
scanf("%d",&n);
data = (double *) malloc (n*sizeof(*data));
for (i=0;i<n;i++)
{
data[i] = rand()/32767.0;
printf("%lf\n",data[i]);
}
system("pause");
i=0;
j=n-1;
temp = data[(n-1)/2];
do{
while (data[i] < temp && i < n) i++;
while (temp < data[j] && j > 0) j--;
printf("i=%d, j= %d, temp = %lf\n",i,j,temp);
if ( i<=j )
{
temp2 = data[i];
data[i] = data[j];
data[j] = temp2;
i++;
j--;
}
for (k=0;k<n;k++) printf("%lf\n",data[k]);
system("pause");
}while (i<=j);
/*
计算比temp值大的个数,最後存成i
计算比temp值小的个数,最後存成j
最後从0到j是原本资料中,值较小的一群
从i到n-1则是原本资料中,值较大的一群
以上,是快速排列法的第一步, 接下来尝试把上列步骤写成副函式
并把分群後的两群(小群 and 大群)再重复执行直到排序完成.
*/
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.7.248