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;
}