insertion-sort,c语言实现

100年没有写过c语言了。最近觉得有必要把它捡起来。个人认为,C这样的语言,天生就是用来操纵数据结构,摆弄算法的。语法并不难,关键是把数据结构和算法捡起来。先从算法中最常见的,排序算法开始。下面是一个插入排序算法的实现:

/*
 ============================================================================
 Name        : insertion_sort.c
 Author      : ThinkingQuest
 Description : insertion-sort
 ============================================================================
 */

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

#define LENGTH(s) (sizeof(s) / sizeof(int))

void printArray(int* array, int size);
void sortArray(int* array, int size);

int main(void) {
	int array[] = {10, 4, 6, 1, 5, 3, 2, 7};

	unsigned long int length = LENGTH(array);
	sortArray(array, length);
	printArray(array, length);

	return EXIT_SUCCESS;
}

void sortArray(int* array, int size) {
    if (size <= 1) {
    	return;
    }

    int i;
    for (i = 1; i < size; i++) {
    	int key = array[i];
    	int j = i - 1;
    	while (array[j] > key && j >= 0) {
    		array[j + 1] = array[j];
    		j--;
    	}
    	array[j + 1] = key;
    }
}

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

(全文完)