C 數據結構與算法系列 插入排序

參照 實驗樓 插入排序代碼
spa

它的作法是:每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。第一趟比較前兩個數,而後把第二個數按大小插入到有序表中; 第二趟把第三個數據與前兩個數從前向後掃描,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃描之後就完成了整個排序過程,以下圖所 示。code

下附實驗代碼排序

#include <stdio.h>
#include <stdlib.h>

int n;

/*
 * 直接插入排序(頭幾遍可能會暈 拿張紙畫畫就懂了 回頭再看幾遍確保理解透徹)
 */
void InsertSort(int *array)
{
    int i, j;
    for (i = 2; i <= n; i++)
    {
        if (array[i] < array[i - 1])
        {
            array[0] = array[i];
            array[i] = array[i - 1];
            for (j = i - 2; array[0] < array[j]; j--)
            {
                array[j + 1] = array[j];
            }
            array[j + 1] = array[0];
        }
    }
}

int main()
{
    int i;
    int *array;
    printf("Please enter the length of arr:\n");
    scanf("%d", &n);
    array = (int*) malloc(sizeof(int) * (n + 1));
    printf("Please enter each element(seperate by space):");
    for (i = 1; i <= n; i++)
    {
        scanf("%d", &array[i]);
    }

    InsertSort(array);
    printf("sorted array:");
    for (i = 1; i <= n; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
}
相關文章
相關標籤/搜索