程序怎么编写?

如题所述

#include <stdio.h>

void display(int a[], int n)
{
int i;
for(i=0; i<n; i++)
printf("%d ", a[i]);
printf("\n");
}

void StraightInsertionSort(int a[], int n)
{
int i, j, x; // x为哨兵
for(i=1; i<n; i++)
{
if(a[i] < a[i-1]) //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
{
x = a[i]; //复制为哨兵,即存储待排序元素
a[i] = a[i-1]; //先后移一个元素
for(j=i-1; j>=0&&x<a[j]; j--)
a[j+1] = a[j];
a[j+1] = x; //插入到正确位置
}
}

}

void main()
{
int i, a[11];
int *StraightInsertionSortD;
StraightInsertionSortD = a;

printf("请输入10个整数(以空格隔开):");
for(i=0; i<10; i++)
scanf("%d", &a[i]);

printf("排序前:");
display(a, 10);

printf("\n排序后:");
StraightInsertionSort(StraightInsertionSortD, 10);
display(StraightInsertionSortD, 10);

printf("\n请输入需要插入的数据:");
scanf("%d", (StraightInsertionSortD+10));

printf("\n再次排序后:");
StraightInsertionSort(StraightInsertionSortD, 11);
display(StraightInsertionSortD, 11);
}
温馨提示:答案为网友推荐,仅供参考