用C语言对一维数组排序,并输出原来的位置 用C语言对一维数组排序,并输出原来的位置

\u7528C\u8bed\u8a00\u5bf9\u4e00\u7ef4\u6570\u7ec4\u6392\u5e8f,\u5e76\u8f93\u51fa\u539f\u6765\u7684\u4f4d\u7f6e

\u53ef\u4ee5\u5148\u7528\u5192\u6ce1\u6392\u5e8f\u5bf9\u6570\u7ec4\u8fdb\u884c\u6392\u5e8f\uff0c\u7136\u540e\u5bf9\u6392\u5e8f\u7684\u6570\u7ec4\u8fdb\u884c\u904d\u5386\uff0c\u627e\u51fa\u5176\u5728\u6392\u5e8f\u4e4b\u524d\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\uff0c\u53c2\u8003\u4ee3\u7801\u5982\u4e0b\uff1a
#include#include#define N 5int main(){int a[N],b[N],c[N],i,j,temp;for(i=0;i<N;i++){//\u8f93\u5165\u6570\u7ec4\uff0c\u5e76\u7528b\u4fdd\u5b58\u6570\u7ec4a\u7684\u503c scanf("%d",&a[i]);b[i]=a[i];}for(i=0;i<N-1;i++)//\u5bf9a\u4ece\u5927\u5230\u5c0f\u5192\u6ce1\u6392\u5e8f for(j=0;j<N-i-1;j++)if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i<N;i++)//\u8f93\u51fa\u6392\u5e8f\u540e\u7684a printf("%d ",a[i]);printf("\n");for(i=0;i<N;i++)//\u904d\u5386\u627e\u51fa\u4ee5\u524d\u7684\u4f4d\u7f6e for(j=0;j<N;j++){if(a[i]==b[j])c[i]=j;}for(i=0;i<N;i++)//\u8f93\u51fa\u4f4d\u7f6e\u6570\u7ec4 printf("%d ",c[i]+1);printf("\n");return 0;}/*\u8fd0\u884c\u7ed3\u679c\uff1a3 8 4 7 68 7 6 4 32 4 5 3 1*/

\u5192\u6ce1\u6392\u5e8f\u6cd5\u5b9e\u73b0\uff0c\u53c2\u8003\u4ee3\u7801\u5982\u4e0b:
#include "stdio.h"
#define N 10
int main( )
{
int i,j,t;
int d[N]={25,47,68,114,77,35,75,24,110,88};
for(i=0;i<N;++i)
printf("%d ",d[i]);
printf("\n");
for(i=0;i<N;++i)
for(j=0;j<N-i-1;++j)
if(d[j]>d[j+1]){
t=d[j];
d[j]=d[j+1];
d[j+1]=t;
}
for(i=0;i<N;++i)
printf("%d ",d[i]);
return 0;
}

可以先用冒泡排序对数组进行排序,然后对排序的数组进行遍历,找出其在排序之前数组中的位置,参考代码如下:

 #include<stdio.h>
#include<string.h>
#define N 5
int main()
{
    int a[N],b[N],c[N],i,j,temp;
    for(i=0;i<N;i++){//输入数组,并用b保存数组a的值 
        scanf("%d",&a[i]);
        b[i]=a[i];
    }      
    for(i=0;i<N-1;i++)//对a从大到小冒泡排序 
        for(j=0;j<N-i-1;j++)
            if(a[j]<a[j+1]){
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
             
    for(i=0;i<N;i++)//输出排序后的a 
        printf("%d ",a[i]);
        printf("
");
         
    for(i=0;i<N;i++)//遍历找出以前的位置 
        for(j=0;j<N;j++){
            if(a[i]==b[j])
                c[i]=j;
        }
         
        for(i=0;i<N;i++)//输出位置数组 
        printf("%d ",c[i]+1);
        printf("
");
    return 0;
}





  • 鐢–璇█瀵逛竴缁存暟缁勬帓搴,骞惰緭鍑鍘熸潵鐨勪綅缃
    绛旓細鍐掓场鎺掑簭娉曞疄鐜帮紝鍙傝冧唬鐮佸涓:include "stdio.h"define N 10 int main( ){ int i,j,t;int d[N]={25,47,68,114,77,35,75,24,110,88};for(i=0;i<N;++i)printf("%d ",d[i]);printf("\n");for(i=0;i<N;++i)for(j=0;j<N-i-1;++j)if(d[j]>d[j+1]){ t=d[...
  • 鐢–璇█瀵逛竴缁存暟缁勬帓搴,骞惰緭鍑宸叉帓濂藉厓绱犵殑鍘熸潵浣嶇疆
    绛旓細} } for(i=0;i<5;i++) c[i]=p[i]-&a[0]+1; printf("鍘熸潵鐨勪綅缃鏁扮粍c[5]={%d,%d,%d,%d,
  • 鐢–璇█瀵逛竴缁存暟缁勬帓搴,骞惰緭鍑鍘熸潵鐨勪綅缃
    绛旓細include<stdio.h>#include<string.h>#define N 5int main(){ int a[N],b[N],c[N],i,j,temp; for(i=0;i<N;i++){//杈撳叆鏁扮粍锛屽苟鐢╞淇濆瓨鏁扮粍a鐨勫 scanf("%d",&a[i]); b[i]=a[i]; } for(i=0;i<N-1;i++)//瀵筧浠庡ぇ鍒板皬鍐掓场鎺掑簭 for(j=0;...
  • 鐢–璇█瀵逛竴缁存暟缁勬帓搴,骞惰緭鍑鍘熸潵鐨勪綅缃
    绛旓細include<stdio.h>#include<string.h>#define N 5int main(){int a[N],b[N],c[N],i,j,temp;for(i=0;i<N;i++){//杈撳叆鏁扮粍锛屽苟鐢╞淇濆瓨鏁扮粍a鐨勫 scanf("%d",&a[i]);b[i]=a[i];}for(i=0;i<N-1;i++)//瀵筧浠庡ぇ鍒板皬鍐掓场鎺掑簭 for(j=0;j<N-i-1;j++)if(a[j]<...
  • 鐢–璇█缂栧啓绋嬪簭浣夸竴涓涓缁存暟缁鍐呯殑鏁颁粠澶у埌灏忔帓鍒
    绛旓細define maxn 1000 int a[maxn];bool cmp ( int a, int b ) { return a > b;}int main(){ int i, n;printf ( "璇疯緭鍏ヨ鎺掑簭鐨勫厓绱犱釜鏁帮細" );scanf ( "%d", &n );printf ( "璇蜂緷娆¤緭鍏%d涓暟锛", n );for ( i = 0; i < n; i++ )scanf ( "%d", &a[i] );s...
  • C璇█缂栧啓涓涓帓搴忓嚱鏁(瀵逛竴缁存暟缁勬帓搴)骞跺湪涓诲嚱鏁颁腑璋冪敤
    绛旓細浠ヤ笅鏄竴涓浣跨敤C璇█缂栧啓涓缁存暟缁勬帓搴鍑芥暟骞跺湪涓诲嚱鏁颁腑璋冪敤鐨勭ず渚嬩唬鐮侊紝閲囩敤鐨勬槸浠庡皬鍒板ぇ鎺掑簭鐨勬柟寮忥紝鍙互鏍规嵁闇瑕佽繘琛屼慨鏀癸細```c include <stdio.h> // 鎺掑簭鍑芥暟锛屽弬鏁颁负寰鎺掑簭鏁扮粍鍜屾暟缁勯暱搴 void sort(int arr[], int len) { int i, j, tmp;// 鍐掓场鎺掑簭 for (i = 0; i < len - 1...
  • c璇█ 瀹氫箟涓涓嚱鏁,灏嗕竴涓涓缁存暟缁涓暟鎹粠灏忓埌澶鎺掑簭
    绛旓細include<stdio.h> define N 10 void sortarray(int *a,int n) { int i,j,k;for ( i=0;i<n-1;i++ ) for ( j=i+1;j<n;j++ ) if ( a[i]>a[j] ) {k=a[i];a[i]=a[j];a[j]=k;} } void main() { int a[N],i;for ( i=0;i<N;i++ ) scanf("%d",&...
  • C璇█鐢ㄤ竴涓猣or寰幆瀵逛竴缁存暟缁杩涜浠庡ぇ鍒板皬鎺掑簭
    绛旓細{ int i, j, tmp;int b[]={18,24,12,59,101,96,34};for(i = 0; i < 6; i++)for(j = i + 1; j < 7 ; j++){ if(b[i] > b[j]){ tmp = b[i];b[i] = b[j];b[j] = tmp;} } i = 0;while(i++ < 7)printf("%d ", b[i - 1]);return 0;} ...
  • C璇█缂栧啓绋嬪簭,灏嗕竴涓涓缁存暟缁鐨勫兼寜閫嗗簭閲嶆柊瀛樻斁銆
    绛旓細include<stdio.h> int main(){ int a[5]={8,6,5,4,1},i,n=5,temp;for(i=0;i<n/2;i++){ temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;} for(i=0;i<n;i++){ printf("%d\t",a[i]);} system("pause");return 0;} ...
  • 鐢–璇█濡備綍灏嗕竴涓涓缁存暟缁涓殑鍏冪礌闅忔満鎺掑簭
    绛旓細include include include intmain(){ inti,j,n,k,t,a[100];srand((unsigned)time(NULL));
  • 扩展阅读:对一维数组进行排序 ... 一维数组一般称为 ... 数组从大到小排序输出 ... c语言数据数组排序题 ... 一维数组简单例子 ... 数组排序从小到大代码 ... c#数组排序方法 ... 一维数组的使用 ... c语言将数组按降序排序 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网