设有n个-100~100之间的随机数组储存于数组S中,写出算法 Rearrange(s,h,n),使得负数排在非负数前.帮个忙啦,帖子在问问里

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 09:03:12

设有n个-100~100之间的随机数组储存于数组S中,写出算法 Rearrange(s,h,n),使得负数排在非负数前.帮个忙啦,帖子在问问里
设有n个-100~100之间的随机数组储存于数组S中,写出算法 Rearrange(s,h,n),使得负数排在非负数前.
帮个忙啦,帖子在问问里

设有n个-100~100之间的随机数组储存于数组S中,写出算法 Rearrange(s,h,n),使得负数排在非负数前.帮个忙啦,帖子在问问里
既然已经知道是-100到100之间,那就非常简单了
void rearrange(int s[],in h[],int n) { //s为原数组,h为目标数组,n为原数组长度
int numbers[201] = {0};//用来标示-100~100对应的位置
const int SHIFT = 100; //偏移量
int index = 0,numbers_index = 0;
for (; index != n; ++index) {
++numbers[s[index] + SHIFT]; //每个整数值加偏移调整后存入numbers
}
index = 0;
for (; numbers_index != 201; ) { //遍历每一个numbers[]的值
int temp_index = 0; // 用于遍历重复的某一个值
int count = numbers[index]; // 用于标示某一个值重复了几次
for (; temp_index != count; ++temp_index) {
h[index] = numbers[numbers_index]; // 每一个h[]的元素从小到大依次赋值
++index;
}
++numbers_index;
}
}
不是什么高手,也就看了些书而已,算法应该是很直观的,虽然你可以使用普通的排序算法,诸如最简单的冒泡排序,不过那样就没有充分利用已知的值在一个区间内的条件!
你可以这样想,既然每个值都在区间内,那么就相当于一个数轴,每一个值肯定对应一个点,比如85就在85那个点,-20就在-20那个点,把每一个值这样一一对应好,h然后从小到大开始查看数轴,比如34这个点上显示有两个对应,那就说明原数组内有两个34,就要输出34两次!另外由于数组索引都是从0开始,所以定义了常量SHIFT用来修正偏移!

设有n个-100~100之间的随机数组储存于数组S中,写出算法 Rearrange(s,h,n),使得负数排在非负数前.帮个忙啦,帖子在问问里 C语言 已知一个大小为15的数组,随机生成15个100-200之间的数存入该数组中并显示出数组中的偶数已知一个大小为15的数组,随机生成15个100-200之间的数存入该数组中并显示出数组中的偶数 急求VB编程“利用随机函数产生10个50-100之间的随机整数,求它们的最大值和平均值,要求用数组做”, 利用随机函数产生10个30~100之间的随机正整数,求最大值,最小值 平均值,并显示数组的值和结果用VB程序设计 vb 用随机函数产生10个[100,200]之间的随机整数向数组赋值,按降序排列并输出 用C语言编写程序:* 利用随机函数产生100个10~99之间(包括10和99)的随机整数存入一维数组A,编写程序:* 利用随机函数产生100个10~99之间(包括10和99)的随机整数存入一维数组A,* 然后先 pascal 只有一行共有n个元素:数组A的编码B描述 Description 设有一个数组A:array[0..n-1] of integer;数组中存放的元素为0至n-1之间的整数,且A[i]A[j](当ij时).如:n=6时,A=(4,3,0,5,1,2) 此时,数组A的编码定义 用VB编程:随机产生10个0~100之间的随机整数,存放在一个数组中,然后求个元素和、平均值,统计大于平均值的元素个数并把它们显示出来. VB编程:随机生成10个互不相同的1~100之间的整数,存放在一维数组中,找出最大的元素,并从数组中删除该元素急啊,在线等答案,打下救命! 随机产生100个元素的一维数组a和10X10的二维数组b,求a,b数组的最大值,最小值,均值,总和. 随机产生N个1,1000之间不重复的整数存入数组A中,并按从大到小顺序排列.键入整数X,查找:若无,则插入, VB编程,分别用选择排序法和冒泡排序法实现有N个元素数组的排序.N由键盘输入,数组元素的值在1~200之间,随机产生 使用随机函数“rand()”,生成10个[1,100]之间的整数并存于数组中,首先输出数组各元素值.请统计数组中被5整除的奇数的个数;并计算该数组所有元素的平均值且输出该平均值 随机产生100个6到1000以内的随机整数存入数组a中并输出,然后找出其中的素数存入数组b中输 急!随机产生100个6到1000以内的随机整数存入数组a中并输出,然后找出其中的素数存入数组b中输出 一个具有10个元素的一维数组,下标从1到10,每个数组元素的值是随机函数产生的1~100之间的随机整数.要求:用Visual Basic语言写一个程序,把它们按照从小到大的次序排列起来输出. VB随机产生一个M×N二维数组(M,N缺省为4,数组元素为100以内的正整数),计算其随机产生一个M×N二维数组(M,N缺省为4,数组元素为100以内的正整数),计算其所有元素中0-9出现的次数. 使用随机函数“rand()”,生成10个[1,100]之间的整数并存于数组中,首先输出数组各元素值.然后求所有元素的平均值,并统计数组中大于30且是5的倍数的元素个数,最后输出结果. VB单击Command1,随机生成100个大写英文字母存于数组a中,并显示在Text1中,字母之间用空格隔开