插入排序时一种原地排序算法,稳定的
伪代码
INSERT-SORT(A)
1 for i <- 2 to lenght[A]
2 do key <- A[j]
3 j <- i-1
4 while j > 0 and A[j] > key
5 do A[j+1] <- A[j]
6 j <- j-1
7 do A[j+1] <- key
#include <stdio.h>
void insertsort(int a[], int left, int right)
{
int i;
if (left > right)
return;
for (i = left+1; i <= right; i++) {
int key = a[i];
int j = i;
while (j > left && a[j-1] > key) {
a[j] = a[j-1];
j--;
}
a[j] = key;
}
return;
}
int main(void)
{
int i;
int a[] = {1, 9, 2, 8, 3, 7, 4, 0, 6, 5};
/*
for (i = 1; i < 10; i++) {
int key = a[i];
int j = i;
while (j > 0 && a[j-1] > key) {
a[j] = a[j-1];
j--;
}
a[j] = key;
}
*/
insertsort(a, 0, 9);
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
return 0;
}