重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以用一个辅助数组进行随机排序,方法如下:
创新互联建站专注于企业成都全网营销推广、网站重做改版、友好网站定制设计、自适应品牌网站建设、H5页面制作、成都商城网站开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为友好等各大城市提供网站开发制作服务。
1 获取要排序的数组长度L。
2 定义整型的辅助数组,长度为L。
3 生成L个随机整型数字,存与辅助数组中,这样要排序数组和辅助数组就是一一对应的了。
4 对辅助数组排序,排序过程中,当改变辅助数组中数字的位置时,同步改变要随机排序的原数组中对应的元素位置。比如为排序交换辅助数组的第三个和第五个元素,那么就要同时交换原数组中的第三个和第五个元素。
5 当辅助数组排序完成后,原数组中的值就是随机顺序了。
6 删除辅助数组。
#include
#include
#include
intmain()
{
inti,j,n,k,t,a[100];
srand((unsigned)time(NULL));
p
利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。
运行的结果:
#include
#include
intmain()
{
intnbs
利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。
扩展资料
C语言排序法
在一层循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位。
这样只能排好一个元素,于是需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。
利用rand()函数产生随机数字,rand()%n产生小于n的随机数, 然后交换。
下面是我写的程序:
#include stdio.h#include stdlib.hint 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; in; 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; in; i++) printf("%d ", a[i]); }}