读《算法导论》我来C语言实现(1)——插入排序

来源:互联网 发布:pensen是什么软件 编辑:程序博客网 时间:2024/06/05 05:05

    最近在重新温习算法导论,书里面的算法一段时间不看就会忘记,于是我就想重新用C语言码出来,等以后自己再用复习或要用的时候,直接阅读代码,更加方便。

    书上讲的第一个算法也是个人认为最简单的一个——插入排序,作者把插入排序比作打扑克牌时的摸排并排序,很形象,下面是插入排序的代码:

#include <stdio.h>void insert_sort(int a[], unsigned int n){unsigned int i, j;int temp;for (i = 1; i < n; i++){temp = a[i];j = i - 1;while (j >= 0 && a[j] > temp){a[j + 1] = a[j];j--;}a[j + 1] = temp;}}int main(){int array[] = {5, 10, 2, 3, 9, -1, 3};int i;insert_sort(array, sizeof(array) / sizeof(int));for (i = 0; i < sizeof(array) / sizeof(int); i++){printf("%d ", array[i]);}} 

        插入排序使用的是增量法,遍历数组a的第i项时,数组a的[0~i-1]项已经是有序的,在数组的前i-项中找到适合第i项的位置插入进去;i从头遍历到结尾,即实现了插入排序。