用C随机函数生成n个随机数,然后用归并法排序

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 17:32:05
用C随机函数生成n个随机数,然后用归并法排序

用C随机函数生成n个随机数,然后用归并法排序
用C随机函数生成n个随机数,然后用归并法排序

用C随机函数生成n个随机数,然后用归并法排序
/*
快排么.网上一搜就一堆了.算法只是一种思想或说成一种方法而已,并非就C语言.其它语言也一样
快排也有点像二路归并:从一个无序的序列中随机取出一个值q做为支点,然后把大于q的放到一边,小于q的放到q的另一边,然后再以q为分界点,分别对q的两边
进行排序(快排时直接再对q两边重新取支点,整理,再取支点,...直到支点两旁都有序.也就是支点两旁只有一个数时)
*/
#include <stdio.h>
#include <stdlib.h>
int Qsort(int p[],int beg,int end)
{
if(beg+1>=end)return 0;//退出递归
int low,hight,q;
low=beg;
hight=end;
q=p[low];//q为支点,其实q可以为随机数.但相应以下程序就要改了
while(1){
while(low<hight && p[hight]>q)hight--;
if(low>=hight)break;
p[low++]=p[hight];
while(low<hight && p[low]<q)low++;
p[hight++]=p[low];
}
p[low]=q;
Qsort(p,beg,low-1);
Qsort(p,low+1,end);
}
int main()
{
int i,a[]=;
Qsort(a,0,sizeof(a)/4-1);
for(i=0;i<sizeof(a)/4;i++)printf(" %d ",a[i]);
system("pause");
return 0;
}
快速排序的优势和支点元素的选择有关系.
所选支点元素每次递归后都在最前面或最后面.这样情况就会最差了.
我们知道一般的排序.(如冒泡.)在一个数组p[m,n]中排序.都是确定最大或最小,而确定最大值(最小值)要经过n-m-1次比较.
而整个过程就差不多是(n-m-1)!次比较.
快排中:一次比较可以确定支点元素的位置.若p[m,q,n](q为支点元素).当然确定第一个元素也是要比较(n-m-1)次.但第二个,第三个(第二层)就是(q-m-1)和(n-q-1)次比较.
明显q的值若为m或n,快排就没有什么优势了

用C随机函数生成n个随机数,然后用归并法排序 请问有哪路高手能教一下:用C编一个函数,生成N个互不相等的随机数 C# 用random方法从1-100中随机产生n个随机数 然后把这n个随机数从这100个数中剔除出去C# 用random方法从1-100中随机产生n个随机数 然后把这n个随机数从这100个数中剔除出去 用excel生成N个随机数,如何用if函数使它不重复用excel生成N个随机数,例如[1,1000],如果第n+1个随机数等于第n个随机数,则重新生成第n+1个随机数.总之是不能生成重复的数字.来个最简单的,譬如N=2 c语言 产生1~100随机数,输入一个数字,和第x个随机数一致的话,计算1~x个随机数的和如题,产生1~100随机数,然后用键盘随机输入一个数字,和产生的第x个随机数一致的话,计算1~x个随机数的和产生1 C语言初学者求助 关于随机数生成函数int rand(void)的具体用法我只知道int rand(void)可生成一个0至RAND_MAX的随机整数,rand函数与RAND_MAX定义在stdlib.h文件中.如果定义两个浮点数x,y,要生成n个随机点 C语言中怎样写一个生成随机数的函数?(不用系统自带的随机函数) 写一个彩票程序:从1-30中随机生成7个随机数,不能重复,然后输入7个数,对比7个数是否与随机数有相同的, C语言随机数序列编程:用C语言程序编写.生成随机数序列.范围:1-15要求生成1-15的随机序列,中间无重复C语言随机数序列编程:用C语言程序编写.生成随机数序列.范围:1-15.要求生成1-15的随 RND函数怎么用比如生成m~n之间的随机数 C++随机函数怎么用我想随机一个1到4的随机数. C语言!..生成随机数.生成n个0-m的随机数.求程序写法啊...不懂中. 请问matlab相关问题:用哪个matlab函数可以生成2N-1个具有(0,1)正态高斯分布的随机数? 请用java语言编写排序程序.请编写一个多线程的程序,先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中,然后创建两个线程并发地对所产生的随机数分别进行排序,其中,一个线程 求产生n个随机数,每个随机数位数也随机,n 用Java编写一个小应用程序.程序随机生成1,2,3三个随机数,如果生成1,则绘制10条直线编写一个小应用程序.程序随机生成1、2、3三个随机数,如果生成1,则绘制10条直线,如果生成2,则绘制10个圆,如 C语言中求随机数的问题产生一个0-n的随机数(n*rand()/(RAND_MAX+1.0))rand函数生成一个随机数 但是除以最大值加1 怎么会生成一个0-n的随机数呢? (1/4)C语言中,(1)用随机函数的方法生成100000个[0,99]间的数,并将其存入一维数组(2)用插入法、...(1/4)C语言中,(1)用随机函数的方法生成100000个[0,99]间的数,并将其存入一维数组(2)用插