#include<stdio.h>
#include<string.h>
int main()
{
int nums1[10] = { 0,8,6,3,9,7,5,4,2,1 };
int i, j;
printf(">>直接插入排序: ");
for (i = 2; i <= 9; i++)
{
if (nums1[i] < nums1[i - 1]) {
nums1[0] = nums1[i];
for (j = i - 1; nums1[0] < nums1[j] && j > 0; j--) {
nums1[j + 1] = nums1[j];
}
nums1[j + 1] = nums1[0];
}
}
for (i = 1; i <= 9; i++) {
printf("%d ", nums1[i]);
}
int nums2[10] = { 0,8,6,3,9,7,5,4,2,1 };
printf("\n>>希尔排序:");
int increase = 9;
do
{
increase = increase / 3 + 1;
for (i = increase + 1; i <= 9; i++) {
if (nums2[i] < nums2[i - increase]) {
nums2[0] = nums2[i];
for (j = i - increase; j > 0 && nums2[j] > nums2[0]; j -= increase) {
nums2[j + increase] = nums2[j];
}
nums2[j + increase] = nums2[0];
}
}
} while (increase > 1);
for (i = 1; i <= 9; i++) {
printf("%d ", nums1[i]);
}
}