算法基础2:插入排序

#include 
#define MAXLEN 100

void insertionSort(int arr[], int length);
void showSeq(int arr[], int length);

int main()
{
    int arr[MAXLEN];
    int n, i;
    while (1 == scanf("%d", &n))        // read the length of sequence
    {
        if (0 == n) break;              // break if n == 0
        for (i = 0; i < n; i++)         // read n numbers
            scanf("%d", &arr[i]);
        showSeq(arr, i);
        insertionSort(arr, i);          // insertion sort
        showSeq(arr, i);
    }
    return 0;
}

void insertionSort(int arr[], int length)
{
    int i, j, key;
    for (j = 1; j < length; j++)
    {
        key = arr[j];
        i = j - 1;
        while (i >= 0 && arr[i] > key)    // 向前依次比较
        {
            arr[i+1] = arr[i];
            i--;
        }
        arr[i+1] = key;
    }
}

void showSeq(int arr[], int length)
{
    int i = 0;
    while (i < length)
        printf("%d ", arr[i++]);
    putchar('\n');
}

你可能感兴趣的:(算法&数据结构)