算法分析之插入排序——动态数组实现

来源:互联网 发布:百度云用数据上传慢 编辑:程序博客网 时间:2024/06/05 18:39

插入排序,最简单的排序算法。本次采用动态数组实现。

1.申请动态数组空间

    printf("输入数组的大小length:\n");    int length=0;    scanf("%d",&length);    /****动态分配内存初始化数组***********************/    int * array = (int*)malloc(length * sizeof(int));

申请长度为length的int型数组array。
2.插入排序算法实现

void insert_sort(int array[],int length){    int i,j,key;    for(j=1;j<length;j++)    {        key = array[j];        i = j-1;        while(i>=0 && array[i]>key)        {            array[i+1] = array[i];            i = i-1;        }        array[i+1] = key;        print_array(array,length);    }}

原数组如下图:
输入的数组
第一次循环时:
j=1;i=j-1=0;key=array[1]=2;
因此,2、5交换
第一次循环
第二次循环:
j=2;i=j-1=1;key=array[2]=4;
while循环 i>=0 && array[i]>key为真(i=1;5>4):
执行array[i+1] = array[i];i = i-1;(i=0)
此时数组为:
while循环中数组情况
此时while循环为假,2<4,
所以执行array[i+1] = key;即array[1]=4;
此时数组为:
第二次循环执行完毕
此处不一一列举每次循环的过程了。最后给出运行的截图:
最后运行结果的实现

1 0
原创粉丝点击