排序算法——插入排序(排序算法表格)

概念:

插入排序(InsertionSort),就是将数据一个个得插入到合理的位置的排序方式。

方法:

假设有5,4,2,3,1,6,9,7,8这9个数字,需要对他们进行排序。

第一步从n=1开始,需要0,1位置的两个元素比较大小,对比4,5的大小,4小于5交换他们的顺序,此时结果为4,5,2,3,1,6,9,7,8。

第二步n=2,此时已经存在4,5两个数据,则需要与4,5都比较大小,首先与5比较大小,2小于5,交换2,5的顺序,然后再与4比较大小,2小于4再交换2,4的顺序,此时结果为2,4,5,3,1,6,9,7,8。

第三步n=3,根据步骤三,依次与5,4,2比较大小,并交换位置,此时结果为2,3,4,5,1,6,9,7,8。

以此类推,直到所有的数据都被按顺序排好。

复杂度:待补充

C代码:

#include<stdio.h>
#define MAX_ARRAY_LEN 9

void insertSort(int *array, int n)
{
    int i, j, tmp;
    for(i = 1; i < n; i++)
    {
        j = i - 1;
        tmp = array[i];//当前数据
      //对比小于i的数据,如果大于当前数据就将其向后移动一位,找到插入当前数据的位置
        while(j >= 0 && array[j] > tmp) 
        {
            array[j+1] = array[j];
            j--;
        }
        array[j+1] = tmp; //保存当前值
    }

}

void my_printf(int *array, int n)
{   
    int i;
    for(i = 0; i < n; i++)
    {
        printf("%d", array[i]);
    }
    printf("\n");

}

int main(void)
{
   int test_array[MAX_ARRAY_LEN] = {5, 4,2, 3, 1, 6, 9, 7, 8};
    
    my_printf(test_array, MAX_ARRAY_LEN);

    insertSort(test_array, MAX_ARRAY_LEN);

    my_printf(test_array, MAX_ARRAY_LEN);

    return 0;
}


原文链接:,转发请注明来源!