当前位置:首页 » 编程语言 » c语言随机排序

c语言随机排序

发布时间: 2022-09-06 12:50:24

c语言如何创建十个随机数并按大小排序,这大神,小白坐等

#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#defineSWAP(x,y){x=x+y;y=x-y;x=x-y;}
#defineN10//产生随机数的个数
#defineMAX_N1000//产生随机数的最大值
intmain()
{
inti,j;
intX[N];//存放随机数
srand((unsigned)time(NULL));//定义种子,之后产生随机数需要,使每个产生的随机数都不一样
for(i=0;i<N;i++)
{
X[i]=rand()%MAX_N+1;
}
printf("产生的%d个随机数为: ",N);
for(i=0;i<N;i++)
{
printf("%d",X[i]);
}
printf(" ");
//下面开始排序
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(X[j]<X[i])
SWAP(X[i],X[j]);
printf("排序之后: ",N);
for(i=0;i<N;i++)
{
printf("%d",X[i]);
}
printf(" ");
return0;
}

⑵ C语言设置5个随机一位数排序

排序的部分没啥问题,前面初始化的地方问题很多。
1、int a[] = {}; 在c里不是能定义这样的数组的,这样定义你的a数组长度就是0,你这后对a的任何访问都会出错,应该写做
2、我不清楚你为啥要在循环里写了两遍随机数,难道是想算出不重复的随机数,但题目上也没看到这个要求,在while (a[i] == a[j])这里,这里的 j本身是没值的,它的值是个随机的,所以这里是个死循环,如果只要是普通的随机数据,初始化地方改为
int a[5]={0};
for (i=0; i<=4; i++) {
a[i] = (10*rand())/(RAND_MAX+1.0); //这里你计算随机数怪怪的,一般来说是用rand()%10
}

⑶ c语言如何把一组连续的数随机排开

1 定义一个辅助数组,和原本数组中总数相同。

2 对辅助数组进行随机赋值。

3 对辅助数组进行排序,交换数据时,同时交换源数组中的相同位置。

4 当辅助数组有序后,源数组已经完成随机排序。

代码如下:

voidradom_sort(int*a,intl)
{
int*b;
inti,j,t;
b=(int*)malloc(sizeof(int)*l);
srand(time(NULL));
for(i=0;i<l;i++)
b[i]=rand();
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
{
if(b[i]<b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

⑷ C语言 随机数组排序

#include "stdlib.h"
#include "stdio.h"

main()
{
int i,j,k,a[10000],b[10000],n,t;
printf("please input the number of integer: ");
scanf("%d",&n);

for(i = 0; i < n; i++)
{
a[i] = random(80) + 20; /*生成数组*/
}

for(i = 0;i < n;i++) /*初始化元素数量*/
b[i] = 1;

for(i = 0; i < n; i++)
{
for(j = i + 1;j < n;j++)
{
if(a[i] == a[j])
{
b[i]++; /*计数*/
n--;

for(k = j;k < n;k++) /*去掉数组中重复值*/
a[k] = a[k + 1];

j--;
}
}
}

for(i = 1;i < n;i++) /*升序排序*/
for(j = 0;j < n - i;j++)
if(a[j] > a[j+1])
{
t = a[j];a[j] = a[j + 1];a[j + 1] = t;
t = b[j];b[j] = b[j + 1];b[j + 1] = t;
}

printf("\n Integer numbers\n");
for(i = 0;i < n;i++) /*输出*/
{
printf(" %d %d\n",a[i],b[i]);
}
getch();
}

⑸ C语言:随机生成N个四位数并按降序排列,分别输出排序前后的N个数且每行10个;排序用选择法;怎么写

代码文本:

#include "stdio.h"

#include <stdlib.h>

#include "time.h"

#define N 37

int main(int argc,char *argv[]){

int a[N];

void myset(int *,int);

void mysort(int *,int);

void myout(int *,int,int x=0);

myset(a,N);

myout(a,N);

mysort(a,N);

myout(a,N,1);

return 0;

}

void myset(int *p,int n){//随机数生成函数

srand((unsigned)time(NULL));

for(n--;n>=0;p[n--]=rand()%9000+1000);

}

void mysort(int *p,int n){//选择法排序

int i,j,k;

for(i=0;i<n;i++){

for(k=i,j=k+1;j<n;j++)

if(p[k]<p[j])

k=j;

if(k-i)

j=p[k],p[k]=p[i],p[i]=j;

}

}

void myout(int *p,int n,int x=0){//输出函数

int i,k;

puts(x==0 ? "Before ordering:" : "After ordering:");

for(k=i=0;i<n;i++)

printf(++k%10 ? "%5d" : "%5d ",p[i]);

if(k%10)

putchar(' ');

}

供参考……

⑹ 用C语言如何将一个一维数组中的元素随机排序

利用rand()函数产生随机数字,rand()%n产生小于n的随机数, 然后交换。
下面是我写的程序:
#include <stdio.h>#include <stdlib.h>int main(){ int a[1000], n, i, j, p, q, t; while(1) { printf("\n\n请输入一维数组的维数,0结束 n = "); scanf("%d", &n); if(n==0) break; printf("请输入一维数组中的数据:\n"); for(i=0; i<n; i++) scanf("%d", &a[i]); j=10; while(j--)//随机交换10次 { p=rand()%n;//产生两个随机数 q=rand()%n; t=a[p];//交换 a[p]=a[q]; a[q]=t; } printf("\n随机交换后数组的元素为:\n"); for(i=0; i<n; i++) printf("%d ", a[i]); }}

热点内容
html文件上传表单 发布:2024-09-17 03:08:02 浏览:783
聊天软件编程 发布:2024-09-17 03:00:07 浏览:725
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197
Z包解压命令 发布:2024-09-17 01:27:51 浏览:221