算法导论->算法基础->2.1插入排序 (从小到大)

1 伪代码



2 执行过程图



3 c语言实现完整代码

#include<stdio.h>
#include<malloc.h>

typedef struct MyArray{
  int *pbase;
  int length;
}MyArray,*PMyArray;

PMyArray initMyArray();
void traverse(PMyArray pMyArray);
void insertSort(PMyArray pMyArray);
int main(){
     //初始化排序数组
     PMyArray pMyArray =  initMyArray();
    //遍历数组
     printf("数组元素分别为:\n");
     traverse(pMyArray);
     //排序
    insertSort(pMyArray);
    //遍历数组
    printf("\n数组元素分别为:\n");
    traverse(pMyArray);
    return 1;
};

//插入排序
void insertSort(PMyArray pMyArray){
    if(pMyArray->length <= 0){
        printf("数组长度为0,排序失败");
    }
    else if(pMyArray->length == 1){

    }else{
        int j = 1;
        for(; j < (pMyArray->length); j++){
                ;
                int key = *(pMyArray->pbase +j);
                int i = j - 1;
                while( i >= 0 &&  *(pMyArray->pbase + i) > key ){
                    * (pMyArray->pbase + i + 1)  = *(pMyArray->pbase + i );
                     i--;
                }
                *(pMyArray->pbase + i + 1) = key;

        }

    }


};

//遍历数组
void traverse(PMyArray pMyArray){
    int i;
    for(i = 0 ; i < pMyArray->length;i++){
        printf("%d ",*(pMyArray->pbase + i));
    }
}
//初始化数组
PMyArray initMyArray(){
    //初始化参数
    int lengh;
    printf("输入需要排序的个数:");
    scanf("%d",&lengh);
    //初始化结构体
    PMyArray pMyArray = (MyArray *)malloc(sizeof(MyArray));
    if(pMyArray == NULL){
        printf("内存不够,初始化pMyArray失败");
        exit(1);
    }
    pMyArray->length = lengh;
    pMyArray->pbase = (int *)malloc(sizeof(int)*lengh);

    int i = 0;
    for(;i < pMyArray->length; i++){
        printf("请输入第%d个元素值:",i);
        int value;
        scanf("%d",&value);
        *(pMyArray->pbase +i) = value;

    }
    return pMyArray;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值