//请写出2路插入排序的算法,并将对应的程序调试运行通过
#include<stdio.h>
#include<stdlib.h>
#define N 100
void insert_sort(int a[], int n);
int main(){
int a[N];
int num;
printf("请逐一输入您需排序的数据总数:(小于100)");
scanf("%d",&num);
printf("请逐一输入您需排序的数据:");
for(int i=0;i<num;i++){
printf("请输入第%d个数据",i+1);
scanf("%d",&a[i]);
}
printf("经2路插入排序后数据的升序排序序列为:");
insert_sort(a,num);
printf("\n");
system("pause");
return 0;
}
void insert_sort(int a[], int n)
{
int i, j, temp,low,high,m;
for (i = 1; i < n; ++i)
{
temp = a[i];
low=0;
high=i-1;
while(low<=high){
m=(low + high)/2;
if(temp<a[m]){
high = m-1;
}
else{
low = m+1;
}
}
for(j=i-1;j>high;j--){
a[j+1]=a[j];
}
a[high+1]=temp;
}
for (i = 0; i < n; ++i){
printf(" %d",a[i]);
}
}
2路插入排序
最新推荐文章于 2021-05-15 14:57:43 发布