c语言数组下标,将一组数连同原本的下标一起从大到小排序?

急求:用C语言程序对一组大小不定的数字排序拜托了各位 谢谢_百度知道
急求:用C语言程序对一组大小不定的数字排序拜托了各位 谢谢
题目是:有一组大小不定的数字,需要设定程序对他们进行从小到大的排列。
提问者采纳
} getch() , i & 10, r ); j & ++ j ,7;你是入的十个数是; for( i = 0, key,2; for( j = i - 1; n = r - q ,6; } } void merge( int *a; printf(&quot, j,1,4; ++n&/ i & key ){ a[j+1] = a[j] ,9};) , int r ) {stdio, temp .h&gt, q + 1;) ;%d &quot,9}:\) ; 插入排序法进行排序 for( i = 1; i &lt, array2[N] ;conio: #include &lt.h& } } &#47,&#47,4; return 0 ,1, / n ){ *( a + k ) = array2[j] ,我自己写不出来; array2[j] ){ *( a + k ) = array1[i] ,a[i] ) ;n& /= 0, N; merge_sort( a,比冒泡排序法和选择排序法的效率都要高; j++ ){ if( a[i] &/ i & ++ j , int r ) { m ){ *( a + k ) = array1[i] ; i & a[i] = a[j] ; ++ p & int a[N] = {0,你是入的十个数是;%d &quot,6; for( i = 0, 0; } } a[j+1] = key ,8,我是在看了《算法导论》之后才写的; } for( j = 0,中的元素放进 /// return 0 ; j++ ){ array2[j] = *( a + q + j +1 ) ; #include &lt,3;= r的情况就是要排序的元素只有一个;&#47,6; a[k] = for( i = 0; 选择排序法进行排序 for( i = 0.h& } }/第一个for printf(&quot,3, int p, k,4;/ m和n分别是新建立的两个数组中 / i++ ){ array1[i] = *( a + p + i ) ,1;conio.h& #define N 10 int main( void ) {
/ / N; }&#47,几乎是最简单的排序方法; ++ i &lt, / for( i = 0; i++ ){ printf(& a[j] = #define N 10 void merge_sort( int *a。归并排序法的效率是这四个排序法中效率最高的;/ } 下面的是插入排序法; 元素的个数 m = q - p + 1 ;; #include &lt, r ); #define N 10 int main( void ) { i++ ){ for( j = 0; return 0 ; a[j] ){ k =&#47,8; 也就是说:\conio, q,8;2 ;你是入的十个数是:&#92,2,它已经被排好了 if( p &) ;/ } getch() ; N - 1,a[i] ) : #include & int a[N] = {0,6; merge( a,比冒泡排序法的效率高,/ N-i-1,7;; a[j] ){ temp = a[i] ; &#47,3,5; 开始归并 while( i & int a[N] = {0; #include &lt,2,1, merge( a.h& } 下面的是归并排序法; merge int main( void ) { merge( a.h&&#47,a[i] ) ; int a[N] = {0;&#47,5; N; for( j = i + 1, j, j++ ){ if( a[k] & r ){ q = (p + r)/ N ,9},2;stdio,3,5; } temp = a[i] ; N;/ a[i] = a[k] ; } 下面的是选择排序法,8; #include & j & int array1[N];&#47.h&gt, 归并每个数组剩下的元素 while( i &lt,7;; ++ k ,5;
/ i++ ){ key = a[i] ; i &lt,9}; i++ ){ k = i , q ) :\ } getch() ; i & 新建立的两个数组中 for( i = 0; 冒泡排序法进行排序 for( i = 0; k 不能被初始化为 0
/n& } } }/ } while( j & } else{ *( a + k ) = array2[j] ; j-- ){ if( a[j] &stdio, i++ ){ printf(& ++ k 。代码写出来很简单,你是入的十个数是; 先把数组a[N]; #define N 10 int main( void ) { N - 1;/%d & m && j & n ){ if( array1[i] & ++ j &
/第一个for printf(&quot.h& } getch() ,比其它一些书上的简单多了,a[i] ) ,4第一个就是冒泡排序法; j &lt, temp ,: #include & return 0 , 9) ;第一个for printf(& i++ ){ printf(&quot: #include &lt,7; k = } }/n&%d &quot, } i = j = 0 ; i++ ){ printf(&quot
其他类似问题
为您推荐:
c语言程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【图文】C语言第07讲_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
C语言第07讲
上传于||文档简介
&&合​肥​工​业​大​学​C​语​言​程​序​设​计​课​件
大小:2.01MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢C语言:输入一个10个整数的数组,按从小到大排序输出,然后再输入一个整数,插入到序列中,也符合排序_百度知道
C语言:输入一个10个整数的数组,按从小到大排序输出,然后再输入一个整数,插入到序列中,也符合排序
n输入一个数;printf(&quot,a[10],就是感觉我写的啰嗦;i&i&);9-i;b[i]=b[i+1];i&i&lt!;);for (i=0;n&for (i=0;i++)printf(&;%d&for (i=0;}for (i=0;stdio!;;、数组;}for (i=0;i&}不要用指针;a[j+1]){
t=a[j],加入到排序中;main(){j&i&&#92、9;
a[j]=a[j+1],只能用b[i+1]=t;;b[i+1]){t=b[i],能简化么,b[i]);10,a[i]);;main(){int i?#include &i++)printf(&10;\);11;printf(&n&quot!;i++)for (j=0;%d&%c&quot、i++)if (b[i]&gt,b[11],&a[i]),c);%-4d&%s&10;printf(&scanf(&quot.h&quot,c[9-i]).h&}#include &i++)
printf(&j++)
if (a[j]&char c[10];i++)scanf(&i++)b[i+1]=a[i],&b[0]),j;
scanf(&\%-4d&quot比如 10 20 30 40 50 60 70 80 90 100 插入一个数 52输出为10 20 30 40 50 52 60 70 80 90 100这个我会写;for (i=0:&9;10,t;i&;for (i=0
b[i]=b[i+1],a[10];n输入一个数;printf(&i++)printf(&i&a[j+1]){
t=a[j],b[11];;j++)
if (a[j]&n&quot,j;10;%-4d&quot:&9,a[i]);i++)b[i+1]=a[i]:#include &i++)if (b[i]&printf(&i&lt,后面加了一个逆序输出字符串的代码再来一回;i&%-4d&quot,t;for (i=0.h&10;for (i=0;i&11;;i++)scanf(&b[i+1]){t=b[i];10;;%d&i++)for (j=0;}for (i=0;);&#92,&b[0]);}for (i=0;,&a[i]);main(){
a[j]=a[j+1];i&j&%d&9-i;for (i=0;),b[i]);
scanf(&i++)printf(&quot,加入到排序中;\10;b[i+1]=t;i&for (i=0我好像复制多了
提问者采纳
排序的时候不用冒泡算法,你的程序有2个地方可以改进1实在觉得繁琐,取用其它的排序算法2,插入的时候可以用二分插入法
哪个排序算法最简单?二分插入法我去百度查查,不明白
冒泡最简单,可是效率基本上最低,其它的都比这个要难点, 二分插入:先用二分查找方法找到比他大的数(要插入的数就插在他前面)
然后,先向后移动数据
最后插入数据 注意二分插入法的前提是数据里面的数据必须有序,不然无法成功
神一样的解释,我明白了,我靠,还有这种插法?学无止境啊!
提问者评价
来自团队:
其他类似问题
为您推荐:
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言编程: 将一组数按从大到小的顺序排序_百度知道
c语言编程: 将一组数按从大到小的顺序排序
{printf(&int&{&%d&quot,a[i]);prinft(&i&lt,a代表要排序的数组&j&}&nbsp,m;for(j=0;9-i;j++)&for(i=0;if(a[i]&=9;int&nbsp,10);&;{m=a[i];}&=9;*a;n)//n代表数组个数;&a[i+1]=m;%d&quot,i+1);%d&&nbsp,a[i]);}//end&i++)&i++)&nbsp,i;//将数组排序&for(i=0;input&{&a[10];&i&&i&&i;;function&;&main()&,int&/*以下是输出部分*/&sort(a参考;for(i=0;sort(int&nbsp,j:&n-1;a[i+1])&a[i]=a[i+1];i++)//输入10个数据&scanf(&&nbsp:void&nbsp
中国移动互联网研发培训领导品...
主营:iOS培训,Android培训,HTML5培训,UI培训
其他类似问题
为您推荐:
其他1条回答
;i&i&100:&}/100-i;从大到小的顺序为;;void main(){int num[100].h&/scanf(&当输入0的时候结束输入if(num[i]==0){num[j+1]){temp=num[j]:&}printf(&/;j++){if(num[j]&),%d &冒泡排序实现数组元素从大到小排序for(i=0,也就是最多100个数for(i=0;i++){if(num[i]&gt,&num[i]);num[j]=num[j+1];100;0){printf(&quot,i;i&/num[j+1]=}}//100;请输入第%d个数;for(i=0,(i+1));输入数组;i++){for(j=0;i++){/输出元素不等于0的数组printf(&/%d&i&stdio#include&lt,num[i])
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【图文】C语言第五六次作业_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
C语言第五六次作业
上传于||文档简介
&&c​语​言​作​业​!​!​!
大小:104.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 c语言数组下标类型 的文章

 

随机推荐