當前位置:首頁 » 編程語言 » 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]); }}

熱點內容
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:170
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734