資料結構 2-11設順序表va中的資料元素遞增有序。試寫一演算法,將x插入到順序表的適當位置上,以保持該表的有序性。
將近半年時間內一直沒有寫部落格了,最近一直研究資料結構。該是整理一下的時候了。採用的是嚴蔚敏的習題集。
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;
}