数组插入问题
设顺序表va中的数据元素递增有序,设计一个算法,将x插入到顺序表的适当位置上,以保持该标的有序性#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int shua(int *axz,int u,int length){
int num[100];
int a=0;
int b=length;
int c=0;
while(true){
c=(a+b)/2;
if(*(axz+c)>u){
a=a;
b=c;
}
if(*(axz+c)<u){
a=c;
b=b;
}
if(*(axz+c)==u){
break;
}
if(b-a<=1){
c=(a+b)/2;
break;
}
}
if(*(axz+c)>u||*(axz+c)==u){
for(int i=0;i<=length;i++){
if(i<c){
num[i]=*(axz+i);
}
if(i==c){
num[i]=u;
}
if(i>c){
num[i]=*(axz+i-1);
}
}
}
if(*(axz+c)<u){
for(int i=0;i<=length;i++){
if(i<=c){
num[i]=*(axz+i);
}
if(i==c+1){
num[i]=u;
}
if(i>c+1){
num[i]=*(axz+i-1);
}
}
}
for(int i=0;i<=length;i++){
cout<<num[i]<<" ";
}
return *(num);
}
int main(){
int a[]={1,2,3,4,5,6,10,20};
shua(a,3,8);
system("pause");
return 1;
}
代码写了一半吧,不知怎么优化。