整型数组处理算法(一)按照正态分布来排列整型数组元素
来源:互联网 发布:苹果5s数据用不了 编辑:程序博客网 时间:2024/06/05 02:31
题目要求如下:
给定一个数组input[],
如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,
如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,
然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
这种处理后结果,如果按照元素的值表示一种分布的图形的话,那绘制后的图形应该是正态分布。
关于正态分布:
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。因其曲线呈钟形,因此人们又经常称之为钟形曲线。我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。
这里只是从结果上产生联系,算法与正态分布无关。
代码实现如下:
void sort(int input[],int output[], int n){ int m=n; //cout<<m<<endl; int i,j,temp; bool exchange;//交换标志 for(i=0;i<m-1;i++) { //最多做n-1趟排序 exchange=FALSE; //本趟排序开始前,交换标志应为假 for(j=m-2;j>=i;j--) //对当前无序区R[i..n]自下向上扫描if(input[j+1]<input[j]){//交换记录temp=input[j+1]; //R[0]不是哨兵,仅做暂存单元input[j+1]=input[j];input[j]=temp;exchange=TRUE; //发生了交换,故将交换标志置为真}if(!exchange) //本趟排序未发生交换,提前终止算法break;//cout<<input[5]<<endl;} for(int wc1=0; wc1<m; wc1++)//只是来显示排序结果~{cout<<input[wc1]<<" ";}cout << endl;int q=m-1;if((m%2)==0){int mid=m/2;for (int tempmid=0; tempmid<=mid; tempmid++)//注意循环语句的执行顺序{output[mid+tempmid]=input[q];q--;output[mid-tempmid-1]=input[q];q--;} } if((m%2)!=0)//注意循环语句的执行顺序 {int mid=q/2;output[mid]=input[q];for (int tempmid=1;tempmid<=mid;tempmid++){q--;output[mid-tempmid]=input[q];q--;output[mid+tempmid]=input[q];} } for(int wc=0; wc<m; wc++){cout<<output[wc]<<" "; }cout << endl;}
int main(){ int input[] = {3, 6, 1, 9, 7, 8, 2}; int wc=0; int nCount = sizeof(input)/sizeof(int); for(wc=0; wc<nCount; wc++)// { cout<<input[wc] << " "; //cout<<"\n"<<endl; }cout << endl; int output[]= {3, 6, 1, 9, 7, 8, 2}; sort(input,output, nCount);return 0;}
测试结果:
当int input[] = {3, 6, 1, 9,7, 8, 2, 10};,结果如下:
3 6 1 9 7 8 2 10
1 2 3 6 7 8 9 10
1 3 7 9 10 8 6 2
当int input[] = {3, 6, 1, 9,7, 8, 2, 10};,结果如下:
3 6 1 9 7 8 2
1 2 3 6 7 8 9
2 6 8 9 7 3
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/11961455
- 整型数组处理算法(一)按照正态分布来排列整型数组元素
- 整型数组(一)
- 整型数组处理算法(五)求两个有序数组的共同元素
- 整型数组处理算法(六)合并两个数组
- 数组全排列算法(二)整型数组全排列——递归算法
- 整型数组处理算法(十四)不用库函数,用C语言实现将一整型数转换成字符串
- 整型数组处理算法(三)把一个数组里的所有元素,插入到另一个数组的指定位置
- 2014华为机试——按照升序排列返回整型数组中包含指定整数的元素
- 整型数组处理算法(七)重排问题
- 整型数组
- 数组反转(整型数组)
- 判断整型数组a[N]是不是升序排列(递归)
- 将一个整型数组奇偶排列
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)
- 整型数组处理算法(四)求数组的最大值和最小值
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序
- Intersecting Lines(poj1269)
- C中的字符指针和字符数组的使用
- SQL经典语句
- jquery 插件--简单页面导航
- javascript中apply与call的区别(来自http://www.blogjava.net/jjshcc/archive/2010/08/04/327948.html)
- 整型数组处理算法(一)按照正态分布来排列整型数组元素
- C程序小结2
- sqlite第三方类库:FMDB使用
- DBCP与c3p0__连接池参数详细说明
- 数论四大定理
- Spring AOP执行顺序
- 计算机视觉的三种层次
- 将MSHFlexGrid控件中的数据导入到Excel中
- Goldbach (2013长沙网赛G)