C语言函数调用显示数组

先调用显示数组的函数show,显示数组a的内 容。然后调用排序函数insertSort,实现对数 组a的升序排列,再次调用show函数显示结果

使用插入排序数组:

/* Note:Your choice is C IDE */
#include "stdio.h"

void show(int a[]){
    int i;
    for( i=0;i<5;i++){
        printf("%3d",a[i]);
    }    
    printf("\n");
}

void insertSort(int a[],int n){
    int i,j;
    for( i= 1; i<n; i++){
        if(a[i] < a[i-1]){
            int j= i-1;
            int x = a[i];
            while(j>-1 && x < a[j]){ 
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = x;  
        }
    }
}
 
void main(){
    int a[5] = {4,3,2,1,5};
    printf("排序前:");
    show(a);
    insertSort(a,5);
    printf("排序后:");
    show(a);
}

img

直接用algorithm中的sort函数对数组进行排序

忘记C++有没有排序的函数了,
不过,你这个需求很简单啊,show不就是输出数组中所有的元素吗?
还有insertSort排序函数,自己不会写,百度一大堆代码,复制过来稍微改成自己需求的就行。

#include "stdio.h"

//插入排序

void insertSort(int a[10]){
    int i,temp,pos,k;
    for(i=1;i<10;i++)
    {
        temp=a[i];    
        pos = i-1;
        //把前面大于temp的数据往后移
        while((pos>=0) && (temp<a[pos])){//后面的元素小于前面的元素
            a[pos+1]=a[pos]; //后面一个元素等于前面一个元素的值            
            pos--;
        }
        //把temp的值插入到pos+1的位置
        a[pos+1]=temp;
        
        printf("后移结束,把数据插入到pos+1的位置\n");
        for(k=0;k<10;k++)
            printf("%d\t",a[k]);
        printf("\n");
    }
    printf("排序之后:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");
    
}    
}
void main()
{
    int a[10]={89,1,64,35,74,21,100,99,1000,2};
    int i,temp,pos,k;
    printf("排序之前:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");
    
    for(i=1;i<10;i++)
    {
        temp=a[i];    
        pos = i-1;
        //把前面大于temp的数据往后移
        while((pos>=0) && (temp<a[pos])){//后面的元素小于前面的元素
            a[pos+1]=a[pos]; //后面一个元素等于前面一个元素的值
            
            //打印排序过程
            printf("i=%d,temp=%d,pos=%d\n",i,temp,pos);
            for(k=0;k<10;k++)
                printf("%d\t",a[k]);
            printf("\n");
            //-------------------------------------------------
            
            pos--;
        }
        //把temp的值插入到pos+1的位置
        a[pos+1]=temp;
        
        printf("后移结束,把数据插入到pos+1的位置\n");
        for(k=0;k<10;k++)
            printf("%d\t",a[k]);
        printf("\n");
    }
    printf("排序之后:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");
    
}