插入排序可以看做是,把从左到右的数据依次看做是进入室内的人(室外的人),每进一个人,都需要依次跟室内的人进行比较,如果大于室内的人,则排在队尾~否则,交换位置
C实现如下:
#include<stdio.h> #include<stdlib.h> void insertionsort(int *a, int n); int main() { int i; int a[10] = { 2,4,6,8,0,1,5,9,7,3}; insertionsort(a, 10); for (i = 0; i < 10; i++) printf("%d\t", a[i]); system("pause"); return 0; } void insertionsort(int *a, int n) { int in, out, temp; //室外室内和中间变量;室外的人进入室内依次与室内的人进行比较 //其中,室外的人是从第二个开始,即从索引号为1的位置开始与室内的人进行比较 for (out = 1; out < n; out++) { temp = a[out]; in = out; //利用while循环~将外面的元素依次与里面的元素进行比较 while (in>0 && a[in - 1] >= temp) { a[in] = a[in - 1]; in--; } a[in] = temp; } }