插入排序编译代码
‘壹’ 在键盘上输入10个元素,利用插入法降序排列,现输入一个数x,要求插入到数组中,插入后仍按原规律排列。
给,已经编译运行确认:
#include "stdio.h"
void sort(int *p)
{
int i,j,k;
for (i=0;i<9;i++)
for (j=i+1;j<10;j++)
if (p[i]<p[j])
{
k=p[i];
p[i]=p[j];
p[j]=k;
}
}
void main()
{
int a[11],i,j,x;
printf("请输入10个数: \n");
for (i=0;i<10;i++)
{
printf("第%d个数: ",i+1);
scanf("%d",&a[i]);
}
sort(a);
printf("排序后的数组: \n");
for (i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n请输入要插入的数x: \n");
scanf("%d",&x);
for(i=0;i<10;i++)
{
if(x>a[i])
{
for(j=10;j>i;j--)
{
a[j]=a[j-1];
}
a[i]=x;
break;
}
}
printf("插入后的数组: \n");
for (i=0;i<11;i++)
printf("%d ",a[i]);
}
‘贰’ 数据结构实现折半插入排序(c语言版)
# include <stdio.h>#define Max 7
void B_sort(int a[], int n)
{
int low,high, i,j, t;
int m;
for(i=2;i<=n;++i)
{
t = a[i];//临时存放
low =1;high =i-1;
while(low<=high)
{
m=(low+high)/2;
if(t<a[m])
high =m-1;
else
low =m+1;
}
for(j=i-1;j>=high+1;--j)
{
a[j+1] = a[j];
}
a[high+1] = t;
}}
main()
{int a[Max],i;
int length = Max-1;
printf(" 这是一个折半排序 \n");
printf("请输入%d个待排序的记录序列:\n",length-1);
for(i=1;i<length;i++)
scanf("%d",&a[i]);
B_sort(a,length);
printf("折半排序后的序列:");
for(i=2;i<=length;i++)
printf(" %d",a[i]);
printf("\n");
}
vc下面编译通过的,折半插入排序,希望采纳
‘叁’ 怎么插入20个数,按顺序打印出来(用数据结构做)
给,已经编译运行确认了:
使用的是数据结构中的插入排序算法
#include<conio.h>
#include<stdio.h>
void main()
{
int a[20]={NULL};
int i,j;
int temp;
printf("请输入20个数: \n");
for(i=0;i<20;i++)
{
printf("%d: ",i+1);
fflush(stdin);
scanf("%d",&a[i]);
}
for(i=2;i<20;i++)
{temp=a[i];
j=i-1;
while(j>=0&&temp<a[j])
{a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
printf("排序后: \n");
for(i=0;i<20;i++)
printf("%d ",a[i]);
getch();
}