输入n个数,将他们c语言从小到大排序序,要求用sorted 实现,有交互

用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型,单精度型,双精度型。用重载函数实现_百度知道
用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型,单精度型,双精度型。用重载函数实现
用重载函数实现怎么用同一个函数名对n个数据进行从小到大排序,双精度型,数据类型可以是整型,单精度型
i&5-j:&&5;j&br/a[i]=a[i+1];#include&&quot.5;& for(i=0,-2;&j++)&
if(a[i]&;br/ &}void sort(long []){&& &
sort(b);a[i+1])&br/& cout&,6;j&}void sort(float []){&&5-j,j;&&&& cout&string&&&&&5;&&& for(i=0;j++)&
return 0.4;endl&
void sort(long []);;
if(a[i]&gt.3};&gt, 1198783;br/a[i]&lt,7;j++)
if(a[i]&}void sort(int []){
for(i=0,9;
for(i=0:&quot,t;5; &a[i]=a[i+1];&br&#47, -165654;&&&
{t=a[i]#include&} cout& cout&
void sort(float []);j++)
cout&a[i+1])&lt.6;j&j++)&a[i]&br/5;&endl&5;& for(i=0;int main(){ long a[5]={10100;&gt,0;j++)&&&br/br/ for(j=0;
float c[5]={2;&a[i]=a[i+1]; for(j=0;&lt, -123567;j++)
cout&the sorted numbers,j;a[i]&a[i+1]=t;endl&lt,23;&i&lt,-45};i&i&j++)&br/;br/br/&5-j;
for(i=0, ;&gt:&&; for(j=0;
int b[5]={1;a[i+1])&;a[i+1]=t;&
sort(a);&i&&&lt.6;br/br/j++)&
void sort(int []);
{t=a[i];&&br/endl,j;&i&&} cout&&a[i+1]=t;iostream&} cout&lt
其他类似问题
为您推荐:
单精度的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【图文】lesson 07_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||文档简介
&&C​语​言​数​组
大小:837.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢C语言编程问题问题描述】定义函数void sort(int a[],int n),用选择法对数组a 中的元素升序排列。自定义_百度知道
C语言编程问题问题描述】定义函数void sort(int a[],int n),用选择法对数组a 中的元素升序排列。自定义
、自定义main函数,并在其中调用sort函数【输入形式】6
1 5 -9 2 4 -6【输出形式】After sorted the array is:-9 -6 1 2 4 5
提问者采纳
&&&&&nbsp,&&& a[j])&&&&&& // 临时变量记录待插的值&&&&&&&&&tmp = a[i];&&&&&nbsp, // 释放内存&{&&&&&&&&&&&& i++) scanf("%d";&&&&&nbsp:"),&&&& i &&&&sort(a;&&&&&& i &&&&&&&&&&&printf("After&&&nbsp, & // 动态申请数组空间&& j++)&&&// 移出插入空间&&&&&&&&&&&&&// 输入数据&&&&&&& i &&&{&&&&&&&&&a = (int *)malloc(n * sizeof(int));&&&&&&&&&&&&&&&&&nbsp,& k--) a[k] = a[k - 1];&&&&}}int main(){&&&& 0)&&&for (i = 0;free(a);&&&printf("\n");// 插入&&&&&&&&&&&&&&if (n &gt, &&&&&&&&&&&&&&&&&&&&&&&&&&&&for (j = 0;&&&&if (a[i] &&&&&for (i = 0; // 找到待插位置&&&&&&scanf("%d",& i++) printf("%d ";&& j &&&&&&&&&&&&&&&&&&&&&// 输出排序后的结果&&&&}&&&&// 排序&&&for (k =&&&&&&&&&&&&&&& // 输入数据数量&&&int *a;&&&&&&// 选择插入法排序void sort(int a[];& k &&&&for (i = 0;& i++)&&a[i]);a[j] =&&nbsp#include &&&&nbsp, a[i]).h&&&nbsp, int n){&&&&&#include &&nbsp, n);&n);&return 0;&&nbsp.h&&nbsp
提问者评价
来自团队:
其他类似问题
为您推荐:
c语言编程的相关知识
其他1条回答
五分太少了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1894人阅读
Others(11)
& && 前段时间帮助一个同学完成了一道Visual FoxPro的排序算法作业题,在此记录一下。
一、题目要求:
&&&&&&& 程序先要求使用者输入N个数,最后依次输出原始输入数列、从小到大排列后的数列、从大到小排列后的数列、两端大中间小排列后的数列。
二、程序代码:
NumCount&=&0
INPUT&"&&&请输入需要排序的N个数:"&to&NumCount
IF&NumCount&1
&&&&?&"&&输入的数据个数必须大于0!"
&&&&RETURN
DIME&NumArr(NumCount)
*&Accept&numbers&from&keyboard
FOR&i=1&TO&NumCount
&&&&INPUT&"&&&请输入第"+ALLTRIM(&STR(i)&)+"个数:"&to&NumArr(i)
*&Print&Orginal&numbers
?&"&&&原始输入数列:"
FOR&i=1&TO&NumCount
&&&&??&ALLTRIM(&STR(&NumArr(i)&)&)&+&"&&"
*&Sort&the&array
FOR&curIndex&=&2&TO&NumCount
&&&&curData&&&&&&&&&=&NumArr(&curIndex&)
&&&&sortedMinIndex&&=&1
&&&&sortedMaxIndex&&=&curIndex&-&1&&&&&&&&&&&&&&&&&&&&&&
&&&&*&query&the&positon&that&the&curData&should&put&in
&&&&DO&WHILE&sortedMinIndex&&=&sortedMaxIndex
&&&&&&&&midIndex&=&&(&sortedMinIndex&+&sortedMaxIndex&)&/&2
&&&&&&&&IF&NumArr(&midIndex&)&&&curData
&&&&&&&&&&&&sortedMinIndex&=&sortedMinIndex&+&1
&&&&&&&&ELSE
&&&&&&&&&&&&sortedMaxIndex&=&sortedMaxIndex&-&1
&&&&&&&&ENDIF&&&&&&&
&&&&*move&data&forward&index&from&sortedMinIndex
&&&&FOR&j&=&curIndex&-&1&TO&sortedMinIndex&STEP&-1
&&&&&&&&NumArr(&j+1&)&=&NumArr(&j&)&
&&&&ENDFOR
&&&&*&put&curData&to&its&position
&&&&NumArr(&sortedMinIndex&)&=&curData&&
*&Print&data&from&min&to&max
?&"&&&从小到大排序:"
FOR&i&=&1&TO&NumCount
&&&&??&ALLTRIM(&STR(&NumArr(i)&)&)&+&"&&"
*&Print&data&from&max&to&min
?&"&&&从大到小排序:"
FOR&i&=&NumCount&TO&1&STEP&-1
&&&&??&ALLTRIM(&STR(&NumArr(i)&)&)&+&"&&"
*&Print&from&both&ends&to&center
?&"&&&两端大中间小:"
FOR&i&=&NumCount&TO&1&STEP&-2
&&&&IF&i&0
&&&&&&&&??&ALLTRIM(&STR(&NumArr(i)&)&)&+&"&&"
&&&&startIndex&=&1
&&&&startIndex&=&2
FOR&i&=&startIndex&&TO&NumCount&STEP&2
&&&&IF&i&&=&NumCount
&&&&&&&&??&ALLTRIM(&STR(&NumArr(i)&)&)&+&"&&"
三、编程思路:
&&&&&&& 首先,我们要用一个数组来接收用户输入的原始数据。根据用户指定的数据个数来定义数组维数,并逐个接收用户输入的数据保存到数组里。用户输入数据完毕,即可打印原始数列。为了实现数据的从大到小、从小到大以及两头大中间小的排序,首先就要将该数组从小到大递增排序,然后实现另外两种排序就相对简单了。&&&&&&& 对原始序列进行排序的方法很多,有冒泡排序、选择排序、希尔排序及插入排序等,这里选择使用插入排序算法。总体的思路是假设已经有一个已经排序过的序列,向该序列中插入一个新的数据,新数据放在这个已经排序的序列中适当的位置,保证插入新数据后的序列还是一个有序序列。&&&&&&& 对于一个长度为N的原始序列a [1],a[2],…a[N],我们可以认为第一个数据a[1]是有序的(即这个有序序列只包含一个数据a[1]),这时我们将原始序列中第2个数据a[2]插入这个只包含一个数据的有序序列中,并保证插入后的序列“a[1],a[2]”仍然是有序的。至此,原始序列可以分为已排序和未排序的两个部分,第1个及第2个数据“a[1],a[2]”是有序的,第3个至第N个数据“a[3],a[4],…a[N]”仍然是未排序的。这时我们继续将第3个数据a[3]插入到有序序列中(包含第1个数据和第2个数据的序列“a[1],a[2]”)并保证插入后第1至第3个数据“a[1],a[2],a[3]”是有序的。依此类推,直到第N个数据插入到由第1个至第N-1个数据组成的&& 有序序列“a[1],a[2],…a[N-1]”中,并保证插入后这个N个数据都是有序的。&&&&&&& 一般的,假设序列中第1个至第i( 1&=i&N )个数据“a[1],a[2],…a[i]”是已经排序的,我们将第i+1个数据插入到第1至i-1个数据组成的序列中,为了保证插入后的包含i+1个数据的序列仍然有序,就要将第i+1个数据a[i+1]放在有序序列中适当的位置。由于序列“a[1],a[2],…a[i]”是已经排序的,我们可以将数据a[i+1]与已经排序的序列按递增或递减方向依次做对比,以找到a[i+1]在有序序列中应该处在的位置。例如,将数据a[i+1]依次与数据a[1]、a[2]、…a[i]做比较,如果a[i+1]比当前比较的数据a[j] ( 1&=j&=I )小,则应将a[i+1]放在a[j]的位置,否则继续与下一个数据比较。由于序列“a[1],a[2],…a[N]”是已经排序的,所以插入a[i+1]时可以采用“折中查找”算法,而不必将a[i+1]与有序数列中的数据逐个比较,大大减小比较次数,降低复杂度。将设m=(1+i)/2,即a[m]是a[1]…a[i]数列的中间数据,我们可以直接将a[i+1]与a[m]进行比较,如果a[i+1]&a[m],则继续将a[i+1]与“a[m+1]…a[N]”的中间数据进行比较,反之则与“a[1]…a[m-1]”的中间数据进行比较。依次类推,直至最终找到a[i+1]的位置。&&&&&&& 在进行a[1]…a[N]的排序后,就可以按1..N的顺序打印出递增数列及按从N…1的序列打印出递减数列。为了打印出两头大中间小的序列,分两步打印。第一步从N..1的顺序间隔打印,即打印a[N]、a[N-2]、a[N-4]… a[3]、a[1]。(如果N是偶数则打印a[N]、a[N-2]、a[N-4]… a[4]、a[2])。第二步从1…N的顺序间隔打印a[2]、a[4]…a[N-1](如果N是偶数则打印a[1]、a[3]、…a[N-1])。
四、&程序分析
1.&将用户输入的“数据个数”保存到变量NumCount,声明一个长度为NumCount的数组NumArr,依次接收用户输入的数据保存到数组NumArr里。2.&用一个循环输出数组NumArr里的所有数据,即输出用户输入的原始数列。3.&对数组NumArr进行递增排序。从第2个数据开始至最后一个数据循环插入到前面已经排序的数列中。1)&curIndex 为当前循环中待插入的数据,即到此循环时,第1个到curIndex-1个数据是已经排序的;sortedMinIndex和sortedMaxIndex为已经排序的序列的最小和最大的索引;2)&用折中查找法在已经排序的数列中找到第curIndex个数据应该存放的位置(即最终sortedMinIndex所在的位置);3)&将sortedMinIndex的到curIndex-1的数据依次后移; 4)&将curIndex所在位置的原来数据放到sortedMinIndex位置上,从而达到从1到curIndex的数据都是排序过的目的。4.将已经排序的数组NumArr从1到NumCount的顺序输出,即输出从小到大的数列;5.将已经排序的数足从NumCount到1 的顺序输出,即输出从大到小的数列;6.输出两头大中间小的数列:&& 1)从NumCount到1的顺序间隔输出数列,既循环变量i的步长为-2。&& 2) 第一步输出完毕后,最后一个输出的数据只能是NumArr数组的第一个数据或第二个数据,即循环终止后i的值是-1或0。如果i是0,则第一步最后输出的是NumArr的第2个数据,本次输出应该从第1个数据开始;否则上次最后输出的是NumArr的第1个数据,本次循环应该从2个数据开始输出。且本次循环直到NumCount间隔输出。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:226680次
积分:2919
积分:2919
排名:第7980名
原创:63篇
转载:23篇
评论:63条
(1)(1)(1)(1)(3)(1)(4)(1)(6)(2)(1)(2)(4)(11)(14)(8)(16)(2)(1)(1)(5)c语言编程讲解程序设计基础(第7章数组)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
c语言编程讲解程序设计基础(第7章数组)
上传于||文档简介
&&c​语​言​编​程​讲​解
大小:593.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 java sortedmap 排序 的文章

 

随机推荐