第2个回答 2006-08-05
#include "stdio.h"
#include "time.h"
#include "string.h"
int jiedian(int *n,int low,int high)
{
int key,temp;
key=n[low];
while(low<high)
{
while(low<high&&n[high]>=key)high--;
temp=n[low];n[low]=n[high];n[high]=temp;
while(low<high&&n[low]<=key)low++;
temp=n[low];n[low]=n[high];n[high]=temp;
}
return low;
}
void mysort(int *n,int low,int high)//快速排序
{
int key;
if(low<high)
{
key=jiedian(n,low,high);
mysort(n,low,key-1);
mysort(n,key+1,high);
}
}
int main()
{
int i,j;
int n[30],buf[100];
memset(n,0,sizeof(n));
memset(buf,0,sizeof(buf));
srand((unsigned)time(NULL));
for(i=0;i<30;i++)
{
while(1)
{
j=rand()%100;
if(buf[j]++==0){n[i]=j;break;}
}
}
mysort(n,0,30);
for(i=0;i<30;i++)printf("%d ",n[i]);
system("pause");
return 0;
}
第4个回答 2006-08-05
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <iomanip>
#define LEN 30
using namespace std;
bool re_input(int arr[],int n);//检查数组中的元素是否重复
void create_num(int arr[]);//输入数组
void sort(int arr[]);//排序数字
void sort(int arr[])
{
int temp;
for (int i=0;i<LEN-1;i++)
{
for (int j=i+1;j<LEN;j++)
{
if (arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
bool re_input(int arr[],int n)//检查数组中的元素是否重复
{
bool ans=0;
for (int i=0;i<=n-1;i++)
{
for (int j=i+1;j<=n;j++)
{
if (arr[i]==arr[j])
{
ans=1;
break;
}
}
}
return ans;
}
void create_num(int arr[])//产生随机数
{
srand(time(0));//设置随机数种子
for (int i=0;i<LEN;i++)
{
arr[i]=rand()%89+10;//产生随机数,并把随机数设置在预定范围内
if (re_input(arr,i)) i--;//如果随机数重复,重新产生
}
sort(arr);
}
int main()
{
int arr[30],turn_line=0;//turn_line换行变量
create_num(arr);
for (int i=0;i<LEN;i++,turn_line++)
{
if (turn_line%10==0 && turn_line) cout<<endl;
cout<<setw(3)<<arr[i];
}
cout<<endl;
return 0;
}