2.11设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
算法思想:
1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
假如插入的是2则,需要将所有比2大的数进行后移,直到不比2大为止。
即:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
算法如下:
Sqlist.cpp
#include "Sqlist.h"
Sqlist::Sqlist(void)
{
}
int Sqlist::coutSql(int a[]){//输出数组中的数据
for (int i=0;i<6;i++)
{
cout<<a[i]<<"\n";
}
return 0;
}
int Sqlist::insertSql(int a[])
{//向数组插入数据
int x,i,j;
cout<<"请输入一个数据:";
cin>>x;
//查找插入位置
for(i=0;i<7;i++){
if(a[i+1]>x){
break;
}
}
//移动数据
for(j=7;j>i;j--){
a[i+1]=a[i];
}
//插入
a[i+1]=x;
return 0;
}
Sqlist::~Sqlist(void)
{
}
Sqlist.h
#pragma once
#include "iostream"
using namespace std;
class Sqlist
{
private:
int length;
public:
Sqlist(void);
int coutSql(int a[]);
int insertSql(int a[]);
~Sqlist(void);
};
2-11.cpp
#include"Sqlist.h"
#include"iostream"
using namespace std;
int main()
{
int a[7]={1,2,4,6,7,8,9};
Sqlist sqllist;
cout<<"数组中的数据为:"<<endl;
sqllist.coutSql(a);
sqllist.insertSql(a);
sqllist.coutSql(a);
system("pause");
return 0;
}