插入法
插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。
每次取出一个数, 将它与前一个数比较, 再放在将其交换位置
主要代码
for (i = 1; i < n; i++)
{
int t = p[i];
for (j = i; j > 0 && p[j - 1] > t; j--)
p[j] = p[j - 1];
p[j] = t;
}
源代码
#include <stdlib.h>
#include <stdio.h>
const int N = 100;
int main()
{
int n;
scanf("%d", &n);
int *p = new int[N];
memset(p, 0, N);
int i, j; i = 0;
while (i < n)
scanf("%d", &p[i++]);
for (i = 1; i < n; i++)
{
int t = p[i];
for (j = i; j > 0 && p[j - 1] > t; j--)
p[j] = p[j - 1];
p[j] = t;
}
for (i = 0; i < n; i++)
printf("%d ", p[i]);
free(p);
system("pause");
return 0;
}