c语言随机函数排序 随机快速排序c语言

如何用C语言产生1000个随机数,并用冒泡排序法排序并记录处理次数?如下:
#includestdio.h
#includestdlib.h
int main ()
{
int i,j,a[1000],n=0;
for(i=0;i1000;i++)
a[i] = rand()%3000+1;//产生随机数(3000以内的)
for(i=0;i1000;i++)
{
for(j=i+1;j1000;j++)
{
if(a[i]a[j])//交换
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
n++;
}
【c语言随机函数排序 随机快速排序c语言】}
if(i%15==0)
printf("\n");
printf("%d ",a[i]);
}
printf("\n次数:%d\n",n);
return 0;
}
rand()是产生随机数的函数;需包含头文件#includestdlib.h
rand()%3000+1是产生1~3000的整数 。
c语言如何把一组连续的数随机排开1 定义一个辅助数组,和原本数组中总数相同 。
2 对辅助数组进行随机赋值 。
3 对辅助数组进行排序,交换数据时,同时交换源数组中的相同位置 。
4 当辅助数组有序后,源数组已经完成随机排序 。
代码如下:
void radom_sort(int *a, int l)
{
int *b;
int i,j,t;
b = (int*)malloc(sizeof(int)*l);
srand(time(NULL));
for(i = 0; il; i ++)
b[i] = rand();
for(i = 0; il-1; i ++)
for(j = i + 1; jl; 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语言 排序 随机函数 排序时间你指的随机函数每次产生的长度都不一样是产生的随机数位数不一样吧 , 那是肯定的,而且他肯定在1~20000范围内 。至于第二个问题是你输出的问题,time_t是long型的,你用float型输出肯定是0,应改为printf("t=%dms\n",t);
C语言中的排序函数是什么include cstdlib 或 #include stdlib.h
qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))
参数表
*base: 待排序的元素(数组,下标0起) 。
num: 元素的数量 。
width: 每个元素的内存空间大?。ㄒ宰纸谖ノ唬?。可用sizeof()测得 。
int(*)compare: 指向一个比较函数 。*elem1 *elem2: 指向待比较的数据 。
比较函数的返回值
返回值是int类型,确定elem1与elem2的相对位置 。
elem1在elem2右侧返回正数 , elem1在elem2左侧返回负数 。
控制返回值可以确定升序/降序 。
产生随机数的函数也是rand(),不是rank().
用C语言如何将一个一维数组中的元素随机排序#include
#include
#include
intmain()
{
inti,j,n,k,t,a[100];
srand((unsigned)time(NULL));
p
利用rand()函数产生随机数字c语言随机函数排序,rand()%n产生小于nc语言随机函数排序的随机数c语言随机函数排序,然后交换 。
运行的结果:
#include
#include
intmain()
{
intnbs
利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换 。
扩展资料
C语言排序法
在一层循环找出最小数的下标,该下标用min保存,直到比较完整个数组 , 即可找到最小的数,然后将该数放入数组的第一位 。
这样只能排好一个元素,于是需要再嵌套一层外层循环即可排好所有元素 。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素 。
c语言 数据结构 利用随机函数产生N个随机整数,对这些数进行多种方法进行排序srand(time(NULL)); //产生随机数
for(i = 0; in; i++)
a[i] = rand()%(n - i);
extern void insert(int a[], int x) //插入排序

推荐阅读